5种时间类型比较
| 日期时间类型 | 占用空间 | 日期格式 | 最小值 | 最大值 |
|---|---|---|---|---|
| DATETIME | 8 byte | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 | 9999-12-31 |
| TIMESTAMP | 4 byte | YYYY-MM-DD HH:MM:SS | ||
| DATE | 4 byte | YYYY-MM-DD | 1000-01-01 00:00:00 | 9999-12-31 |
| TIME | 3 byte | HH:MM:SS | ||
| YEAR | 1 byte | YYYY |
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 |
+---------------------+