MySQL 基礎教程-04 日期計算

MySQL提供了用於計算日期的函數,例如計算年齡或者日期的特定部分。
要肯定你的寵物有多大了,可使用 TIMESTAMPDIFF() 函數,這個函數的第一個參數指定比較結果展現的單位,第二三個參數是兩個將要比較的日期,下列查詢顯示了寵物的出生日期,當前日期以及寵物的年齡,結果使用了別名 age ,這樣結果列名更有意義。ide

MySQL 基礎教程-04 日期計算
查詢成功了,可是若是結果以特定順序展現,則更有利於咱們查看。能夠經過ORDER BY name子句對結果按name列排序:
MySQL 基礎教程-04 日期計算函數

若是要對結果按年齡排序,僅需更改ORDER BY子句:3d

MySQL 基礎教程-04 日期計算

可使用相似的方法查詢動物死時的年齡,能夠經過檢查death的值是否爲NULL來查出已經死亡的動物,而後計算出生和死亡的時間差值:blog

MySQL 基礎教程-04 日期計算

查詢使用了death IS NOT NULL而不是 death <> NULL ,這是由於NULL是一個特殊的值,不能使用常規的比較操做符進行比較。
若是想知道哪些動物的生日在下個月,該怎麼辦呢?對於這類計算,年和日期是無關的信息,咱們僅須要提取出生日期中的月份,MySQL提供了幾個函數用來從日期中提取信息,例如YEAR(),MONTH()和DAYOFMONTH(),這裏使用MONTH()函數是適合的。簡單示例以下:
MySQL 基礎教程-04 日期計算排序

若是當前是4月份,查找下個月過生日的動物:教程

MySQL 基礎教程-04 日期計算

若是當前月份是12月,那麼這個查詢會有一點複雜,咱們不能僅僅是對當前月份加1,而後查詢出生在13月的動物,由於根本沒有這個月份,相應的,咱們應該查找出生在1月份的動物。咱們能夠經過寫查詢語句來解決這個問題,不管當前月份是什麼。DATE_ADD()用於對給定日期增長時間間隔。若是要對CURDATE()的時間值增長1個月,而後用MONTH()查出日期月份,結果就是咱們要求的月份:it

MySQL 基礎教程-04 日期計算

另一種方法是查詢當前月份,月份加1獲得下一個月的月份,而後使用取模(MOD)函數將12月份的月轉換成0。class

MySQL 基礎教程-04 日期計算

MONTH()函數返回一個1-12之間的數值, MOD(something,12) 函數返回一個0-11之間的值。所以加1必定是在MOD()函數以後。
若是計算使用了無效日期,則計算失敗併產生警告:基礎

MySQL 基礎教程-04 日期計算

相關文章
相關標籤/搜索