最近太忙沒時間寫博客,今天寫個簡單的,項目中有個需求就是查詢年齡,已知出生日期,在sql中解決,上代碼
表中的信息:
| name | species | birth |
+----------+---------+------------+
| Chirpy | bird | 1998-09-11 |
| Whistler | bird | 1997-12-09 |
| Claws | cat | 1994-03-17 |
| Fluffy | cat | 1993-02-04 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-31 |
| Buffy | dog | 1989-05-13 |
| Puffball | hamster | 1999-03-30 |
| Slim | snake | 1996-04-29 |
+----------+---------+------------+
YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日曆年)部分的最右面5個字符。比較MM-DD值的表達式部分的值一般爲1或0,如果CURDATE()的年比birth的年早,則年份應減去1。
sql:
SELECT name, birth, CURDATE(),
(YEAR(CURDATE())-YEAR(birth))
-(RIGHT(CURDATE(),5)<RIGHT(birth,5))
AS age
FROM pet結果如下:
+----------+------------+------------+------+
| name | birth | CURDATE() | age |
+----------+------------+------------+------+
| Fluffy | 1993-02-04 | 2003-08-19 | 10 |
| Claws | 1994-03-17 | 2003-08-19 | 9 |
| Buffy | 1989-05-13 | 2003-08-19 | 14 |
| Fang | 1990-08-27 | 2003-08-19 | 12 |
| Bowser | 1989-08-31 | 2003-08-19 | 13 |
| Chirpy | 1998-09-11 | 2003-08-19 | 4 |
| Whistler | 1997-12-09 | 2003-08-19 | 5 |
| Slim | 1996-04-29 | 2003-08-19 | 7 |
| Puffball | 1999-03-30 | 2003-08-19 | 4 |
+----------+------------+------------+------+希望能幫到需要的戰友。