mysql可以做日期處理;它可以利用CURDATE()、NOW()、YEAR()、MONTH()、DAY()、HOUR()、MINUTE()、SECOND()等內置函數來做日期處理,例“SELECT? CURDATE()”獲取當前日期。
最近一個項目,需要寫很多的sql語句。涉及到很多與時間相關的處理,現在做一下簡單的總結。
1.時間格式:在這個項目中,或許是由不同的人建立的數據庫表結構吧,對時間的格式步統一,有的表中存儲的long類型的時間戳,有的表中是存儲的日期,有的表中存儲的是時間,同時格式有20171225,2017-12-25等,一點都不統一。這樣做,會對項目增加一些額外的工作量,同時會衍生出一些問題出來。比如,在寫后臺代碼時,需要對時間做出處理,以適應數據庫的時間格式;在進行奪標聯合查詢時,時間格式不統一,又會對sql語句進行時間格式轉換,造成sql語句臃腫的情況。所以,在同一個項目中,時間格式應該保持統一。個人覺得long 類型的時間戳,以及String類型的yyyy-MM-dd HH:mm:ss 這兩種方式時比較不錯的。
long類型的時間戳,是因為后臺java代碼將date類型的時間轉化為時間戳很容易。
String類型時因為,我們假如經常使用時間這個字段,在應用時不需要額外將Date類型轉化為String類型,使用起來比較直觀,方便。
2.常用時間語句
SELECT??CURDATE():2020-10-7 //此時日期 SELECT??NOW()?:?2020-10-7?22:20:21 //此刻時間 SELECT??YEAR('2020-10-7?22:27:45'):?2020 //獲取時間的年份 SELECT??MONTH('2020-10-7?22:27:45'):?10 //獲取時間的月份 SELECT??DAY('2020-10-7?22:27:45'):25 //獲取時間的天數 SELECT??HOUR('2020-10-7?22:27:45'):22 //獲取時間的小時 SELECT??MINUTE('2020-10-7?22:27:45'):27 //獲取時間的分鐘 SELECT??SECOND('2020-10-7?22:27:45'):45 //獲取時間的秒數
SELECT??DATE_SUB(NOW(),INTERVAL???1???YEAR) //在目前的時間減去一年,該語句可以進行多種操作,指定時間下減去x年:DATE_SUB("2017-12-25",INTERVAL?x?YEAR),同時可以減去?x?month/day/hour/minute/second等 SELECT??DATE_ADD(NOW(),INTERVAL?1?YEAR) //同上,在目前的時間上加上一年 SELECT??CONCAT('2017','-12-12'):2017-12-12 //組裝字符串,可以組裝成任何時間格式,也可以使用如上語句,例如:SELECT?CONCAT(YEAR(NOW()),'-12-12')?:2017-12-12?; SELECT?UNIX_TIMESTAMP('2017-12-25'):1514131200 //字符串轉換成時間戳 SELECT?FROM_UNIXTIME(1514131200)?:2017-12-25?00:00:00 //時間戳轉化為時間 SELECT?DATE_FORMAT('2017-12-25?22:23:01',?'%Y-%m-%d?%H:%i:%s');? //字符串轉化為時間格式(date),也可以時間格式轉化為字符串格式
以上就是在mysql中比較常用的一些時間相關的語句。
推薦教程:mysql視頻教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦