表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
select now(),CURRENT_TIMESTAMP() ;
select CURDATE(),CURRENT_DATE() ;
select CURTIME() , CURRENT_TIME() ;
计算起始日期 d 加上 n 天的日期
select ADDDATE("2022-01-26",7) ,ADDDATE(now(),10) ;
时间 t 加上 n 秒的时间
select ADDTIME('2022-01-02 11:11:11',59),ADDTIME(now(),60*60);
从日期或日期时间表达式中提取日期值
select date('2022-01-02 11:11:11') ,date(now());
返回日期值 d 的日期部分
select day('2022-01-02 11:11:11'),day(now()) ;
计算日期 d1->d2 之间相隔的天数
select DATEDIFF("2021-12-23","2022-01-01") ,DATEDIFF("2022-01-01","2021-12-23");
将时间根据自定义格式展示
select DATE_FORMAT(now(),"%Y-%m-%d %r") ,DATE_FORMAT(now(),"%Y-%m-%d %H:%I:%S");
返回日期 d 是星期几,返回是英文,如 Monday,Tuesday
select DAYNAME(now()),DAYNAME("2022-02-14");
计算日期 d 是本月的第几天
select DAYOFMONTH(now()),DAYOFMONTH("2022-02-14");
日期 d 今天是星期几,1 星期日,2 星期一,以此类推 注意 星期日是1
select DAYOFWEEK(now()) ,DAYOFWEEK("2022-02-14");
从日期 d 中获取指定的值,type 指定返回的值
select
EXTRACT(DAY from now()) #本月第几天
,EXTRACT(WEEK from now()) # 本年的第几个星期
,EXTRACT(HOUR from now()) #当前的小时
,EXTRACT(SECOND from now()) #当前的秒
,EXTRACT(MINUTE from now()) #当前的分
获取时间戳 默认是当前日期
select UNIX_TIMESTAMP(),
UNIX_TIMESTAMP('2022-09-06 12:03:23');
时间戳转日期
select FROM_UNIXTIME(1662432276),
FROM_UNIXTIME(1662432276,"%Y-%m-%d") ,
FROM_UNIXTIME(1662432276,"%Y-%m-%d %H") ,
FROM_UNIXTIME(1662432276,"%Y年%m月%d日") ;