2015-10-13 169 views
0

如何計算SQL查詢中用戶的年齡。請注意,我將數據庫分成了幾個字段:生日,生日月和生日年。如何計算查詢中的年齡?

我創建了fiddle來展示我的意思。

CREATE TABLE IF NOT EXISTS `user_profile` (
    `user_id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_birthday` tinyint(4) NOT NULL, 
    `user_birthmonth` tinyint(4) NOT NULL, 
    `user_birthyear` smallint(6) NOT NULL, 
    PRIMARY KEY (`user_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

INSERT INTO `user_profile` 
(user_birthday, user_birthmonth, user_birthyear) VALUES (31, 12, 1990) 
+0

哪些DBMS您使用的是夠了嗎?在Postgres中,你可以使用'age()'函數 –

+0

你想要的邏輯是首先從三個字段中創建一個日期。接下來,獲取該日期和當前日期之間的天數。除以365.25。年齡是結果的整數部分。我不使用mySql,所以我不知道必要的功能。 –

回答

1

SqlFiddleDemo

SELECT YEAR(NOW()) - YEAR(birthday) - (DATE_FORMAT(birthday, '%m%d') < DATE_FORMAT(NOW(), '%m%d')) AS Age 
FROM (
SELECT 
CAST(CONCAT(`user_birthyear`, '-', `user_birthmonth`, '-', `user_birthday`) AS DATE) AS birthday 
FROM user_profile) AS s 
+1

太棒了,這完成了這項工作。非常感謝! – Piet

+0

@Piet很高興聽到它可以幫助你:) – lad2025

-3

年(GETDATE()) - birthyear應

+2

如果有人在2015年12月出生,他們2016年1月的年齡是多少? –