MySQL时间函数

302 阅读1分钟

5种时间类型比较

日期时间类型占用空间日期格式最小值最大值
DATETIME8 byteYYYY-MM-DD HH:MM:SS1000-01-01 00:00:009999-12-31
TIMESTAMP4 byteYYYY-MM-DD HH:MM:SS
DATE4 byteYYYY-MM-DD1000-01-01 00:00:009999-12-31
TIME3 byteHH:MM:SS
YEAR1 byteYYYY

now()

返回当前时间和日期,在SQL执行之前就得到值了,

mysql> select now(), sleep(3), now();
 +---------------------+----------+---------------------+
 | now()               | sleep(3) | now()               |
 +---------------------+----------+---------------------+
 | 2021-08-02 17:36:53 |        0 | 2021-08-02 17:36:53 |
 +---------------------+----------+---------------------+

CURRENT_DATE()

返回当前日期

mysql> select CURRENT_DATE()  
 +---------------------+
 | CURRENT_DATE()      | 
 +---------------------+
 | 2021-08-02          |    
 +---------------------+

DATE(date)

DATE(date)函数返回日期或日期/时间表达式部分

mysql> select DATE("2021-08-02 12:12:12")  
 +---------------------+
 |       DATE()        | 
 +---------------------+
 |     2021-08-02      |    
 +---------------------+

DATE_ADD(date,INTERVAL expr type)

DATE_ADD(date,INTERVAL expr type)从日期增加指定的时间间隔,date参数是合法的日期表达式,expr参数时你希望的添加的时间间隔,type参数可以是(DAY,SECOND,MINITE)

mysql> select DATE_ADD("2021-08-02 12:12:12",INTERVAL 1 day) 
 +---------------------+
 |       DATE()        | 
 +---------------------+
 | 2021-08-02 12:12:12 |    
 +---------------------+

DATEDIFF(date1,date2)

DATEDIFF() 函数返回两个日期之间的天数,date1 和 date2 参数是合法的日期或日期/时间表达式,只有值的日期部分参与计算

mysql> SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
 +---------------------+
 |      DiffDate       | 
 +---------------------+
 |         1           |    
 +---------------------+

DATE_FORMAT(date,format)

DATE_FORMAT(date,format) 函数用于不同格式显示日期/时间数据,比如format值为 %Y-%m-%d hh:mm:ss

mysql> SELECT DATE_FORMAT(date,"%Y-%m-%d hh:mm:ss") as  DiffDate   
 +---------------------+
 |      DiffDate       | 
 +---------------------+
 |     2008-12-30      |    
 +---------------------+