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

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

獲取當前時間格式串:

#獲取當前時間戳
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 等特殊屬性mysql

而 datetime 做爲時間格式沒法設置當前時間爲其默認值,由於mysql不容許函數做爲默認值定義,即 default now()是無效的 ,其餘的時間格式還有 YEAR DATE TIMEsql

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是指跨度單位:spa

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

還有code

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 5 DAY, now() - interval 5 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 5 day);
相關文章
相關標籤/搜索