MySQL一些常用的時間函數 current_timestamp()


轉自:https://my.oschina.net/sallency/blog/470370

mysql自帶的一些函數功能也是很強大的,這里整理了一下時間方面的

獲取當前時間格式串:

#獲取當前時間戳
current_timestamp() yyyy-mm-dd hh:ii:ss  now() yyyy-mm-dd hh:ii:ss curdate() yyyy-mm-dd current_date() curtime() hh:ii:ss current_time()

提取date各個字段

#提取date各個字段 date('yyyy-mm-dd hh:ii:ss') yyyy-mm-dd year('yyyy-mm-dd hh:ii:ss') yyyy month('yyyy-mm-dd hh:ii:ss') mm day('yyyy-mm-dd hh:ii:ss') dd

提取time各個字段

#提取time各個字段 time('yyyy-mm-dd hh:ii:ss') hh:ii:ss hour('yyyy-mm-dd hh:ii:ss') hh minute('yyyy-mm-dd hh:ii:ss') ii second('yyyy-mm-dd hh:ii:ss') ss

獲取當前或者某一時間的unix時間戳

#unix時間戳1970-01-01以來的秒數 unix_timestamp() #同時還可以將某一時間格式串的秒數轉化出來 unix_timestamp('yyyy-mm-dd hh:ii:ss')

格式化時間串和格式化時間戳

#格式化時間串 date_format 與 time_format 為同一函數 輸入為  date_format(now(), '%Y-%m-%d %T'); time_format(now(), '%H:%i:%s');
#格式化時間戳 將時間戳轉化為時間格式串 from_unixtime(unix_timestamp(), "%Y-%m-%d %T")

datetime 類型 與 timestamp 類型的比較

timestamp類型的列可以設置 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 等特殊屬性

而 datetime 作為時間格式無法設置當前時間為其默認值,因為mysql不允許函數作為默認值定義,即 default now()是無效的 ,其他的時間格式還有 YEAR DATE TIME

datetime YYYY-mm-dd HH:ii:ss '1000-01-01 00:00:00'到'9999-12-31 23:59:59' 8字節 timestamp YYYY-mm-dd HH:ii:ss '1970-01-01 00:00:00'到'2037-12-31 23:59:59' 4字節

date_add() date_sub() interval

對於時間戳直接加值就可以進行時間平移,但對於時間格式串的加減我們可以使用 INTERVAL expr TYPE

TYPE是指跨度單位:

MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER【四分之一年】 YEAR

還有

SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
#"5:20:15" 5小時20分15秒的步進量 HOUR_SECOND #"5:20" 5小時20分的步進量 HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR #"0001-02"1年零2個月的步進量 YEAR_MONTH
#+- 參照點 間隔度 #當前時間加5天 date_add(now(), interval 5 DAY) #當前時間減5天 date_sub(now(), interval 5 DAY) #加5天2小時10分鍾20秒 date_add(now(), interval "05 02:10:20" DAY_SECOND); #加1年2個月 date_add(now(), interval "0001-02" YEAR_MONTH); #當然也可以直接用運算符 select now() + interval DAY, now() - interval DAY #換成時間戳的運算是 select unix_timestamp() + 5*24*60*60, unix_timestamp() - 5*24*60*60

extract()從時間格式串中提取時間

#提取天 select extract(DAY from now()); #提取天 小時 分鍾 秒  select extract(DAY_SECOND from now());

datediff()返回兩個時間點相差的天數

#-5天 只會計算天數 select datediff(now(), now() + interval day);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM