โปรแกรมบัญชีเกณพ์คงค้าง รพ.สต. สสจ.สุรินทร์ รายงานผู้บริหารด้านการเงิน รพ.สต.

คำนวณหาอายุจากวันเกิด SQL


DateTime : 2010-06-04 13:01:35
Post By : huwko
IP Address :

CREATE FUNCTION find_age(in_dob datetime) returns int
NO SQL
BEGIN
DECLARE l_age INT;
IF DATE FORMAT(NOW(), '00-%m-%d') >= DATE_FORMAT(in_dob, '00-%m-%d') THEN
SET l_age = DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(in_dob, '%Y');
ELSE
SET l_age = DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(in_dob, '%Y) - 1;
END IF;
RETURN (l_age);
END;

วิธีใช้งาน
SELECT find_age(field_birthdate) AS age FROM tb_name


Message !!

หากต้องการตอบกระทู้ Webboard กรุณาเข้าใช้ระบบก่อนนะค่ะ..


กระทู้ตอบกลับ

ขอบคุณครับใช้งานได้ดีครับ


Post โดย :  chinaga Date: 2010-06-04 13:28:05 ip:

การหาอายุจากวันเดือนปี เกิด

ถ้าใช้ Mysql ต่ำกว่า 4.1 ก็ลำบากหน่อย เราต้อง query ข้อมูลออกมาแล้วให้ php ช่วยคำนวนต่อ
 

ถ้าใช้ Mysql 4.1 หรือสูงกว่า การคำนวนอายุทำได้ง่ายดังนี้
ตามตัวอย่าง เมื่อ dob คือ field เก็บวันเดือนปีเกิด member คือชื่อตาราง
แบบแรก
 

SELECT  DATE_FORMAT( NOW( ) , '%Y' ) - DATE_FORMAT( dob, '%Y' ) - ( DATE_FORMAT( NOW( ) , '00-%m-%d' ) < DATE_FORMAT( dob, '00-%m-%d' ) ) AS age
FROM member

แบบที่สอง
 

SELECT YEAR( FROM_DAYS( DATEDIFF( NOW( ) , dob ) ) )
FROM `member`



สำหรับ Mssql ทำได้ง่ายกว่า Mysql ใน Mssql สามารถใช้
Function DATEDIFF(datepart,startdate,endate)
ตัวย่าง
 

DATEDIFF(year,'2000-01-30','2001-07-30');

Post โดย :  huwko Date: 2011-01-07 12:36:54 ip: 118.175.76.231

SELECT DATE_FORMAT( NOW( ) , '%Y' ) AS dNow,SUBSTRING(birthday,1,4)-543 from null_3202 limit 100


Post โดย :  huwko Date: 2011-01-07 13:02:02 ip: 118.175.76.231

 

 

YEAR( FROM_DAYS( DATEDIFF( NOW( ) , p.birthday ) ) )

 

 

แบบนี้ ok


Post โดย :  huwko Date: 2011-03-18 14:07:18 ip: 118.175.76.231