目录

MySQL 日期时间函数

整理一下我曾有所耳闻的 MySQL 日期和时间函数。

常用日期时间函数

名称描述备注
ADDDATE()添加日期
ADDTIME()添加时间
CONVERT_TZ()转换不同时区
CURDATE()返回当前日期
CURRENT_DATE()CURRENT_DATE等同于 CURDATE()
CURRENT_TIME()CURRENT_TIME等同于 CURTIME()
CURRENT_TIMESTAMP()CURRENT_TIMESTAMP等同于 NOW()
CURTIME()返回当前时间
DATE_ADD()添加两个日期
DATE_FORMAT()按指定方式格式化日期
DATE_SUB()求解两个日期的间隔
DATE()提取日期或日期时间表达式中的日期部分
DATEDIFF()求解两个日期的间隔
DAY()等同于 DAYOFMONTH()
DAYNAME()返回星期中某天的名称
DAYOFMONTH()返回一月中某天的序号(1-31)
DAYOFWEEK()返回参数所指定的一周中某天的索引值
DAYOFYEAR()返回一年中某天的序号(1-366)
EXTRACT提取日期中的相应部分
FROM_DAYS()将一个天数序号转变为日期值
FROM_UNIXTIME()将日期格式化为 UNIX 的时间戳
HOUR()提取时间
LAST_DAY根据参数, 返回月中最后一天
LOCALTIME()LOCALTIME等同于 NOW()
LOCALTIMESTAMPLOCALTIMESTAMP()等同于 NOW()
MAKEDATE()基于给定参数年份和所在年中的天数序号, 返回一个日期
MAKETIME根据给定小时, 分, 秒返回一个格式时间
MICROSECOND()返回参数所对应的毫秒数
MINUTE()返回参数对应的分钟数
MONTH()返回传入日期所对应的月序数
MONTHNAME()返回月的名称
NOW()返回当前日期与时间
PERIOD_ADD()为年-月组合日期添加一个时段
PERIOD_DIFF()返回两个时段之间的月份差值
QUARTER()返回日期参数所对应的季度序号
SEC_TO_TIME()将描述转变成 HH:MM:SS 的格式
SECOND()返回秒序号(0-59
STR_TO_DATE()将字符串转变为日期
SUBDATE()从给定的日期中减去一个时间区间, 相当于 DATE_SUB()
SUBTIME()计算时间差值
SYSDATE()返回函数执行时的时间
TIME_FORMAT()提取参数中的时间部分
TIME_TO_SEC()将参数转化为秒数
TIME()提取传入表达式的时间部分
TIMEDIFF()计算时间差值
TIMESTAMP()单个参数时, 函数返回日期或日期时间表达式; 有 2 个参数时, 将参数求和
TIMESTAMPADD()为日期时间表达式添加一个间隔 INTERVAL
TIMESTAMPDIFF()从日期时间表达式中减去一个间隔 INTERVAL
TO_DAYS()返回转换成天数的日期参数
UNIX_TIMESTAMP()返回一个 UNIX 时间戳
UTC_DATE()返回当前的 UTC 日期
UTC_TIME()返回当前的 UTC 时间
UTC_TIMESTAMP()返回当前的 UTC 时间与日期
WEEK()返回周序号
WEEKDAY()返回某天在星期中的索引值
WEEKOFYEAR()返回日期所对应的星期在一年当中的序号(1-53)
YEAR()返回年份
YEARWEEK()返回年份及星期序号

日期时间函数用法

DATE_ADD() 函数

1
2
3
SELECT DATE_ADD('2017-11-11', INTERVAL 31 DAY);
SELECT ADDDATE('2017-11-11', INTERVAL 31 DAY);
SELECT ADDDATE('2017-11-11', 31);

ADDTIME() 函数

1
SELECT ADDTIME('2017-12-31 23:59:59.999999', '0 0:0:0.000001');

CONVERT_TZ() 函数

1
2
// 导入时区数据
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p -S /usr/local/var/run/mysql/mysql.sock --force mysql
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 设置全局时区
SET GLOBAL time_zone = 'Asia/Shanghai';

// 查看系统时区
SELECT @@global.time_zone, @@session.time_zone;

// 时区相关的表
SELECT * FROM mysql.time_zone;
SELECT * FROM mysql.time_zone_transition_type;
SELECT * FROM mysql.time_zone_transition;
SELECT * FROM mysql.time_zone_name;
SELECT * FROM mysql.time_zone_leap_second;
1
2
SELECT CONVERT_TZ(NOW(), 'Asia/Shanghai', 'GMT');
SELECT CONVERT_TZ(NOW(), '+08:00', '+00:00');

CURRENT_DATE(), CURRENT_DATE 函数

1
2
3
4
SELECT CURRENT_DATE();
SELECT CURRENT_DATE() + 0;
SELECT CURRENT_DATE;
SELECT CURRENT_DATE + 0;

CURRENT_TIME(), CURRENT_TIME 函数

1
2
3
4
SELECT CURRENT_TIME();
SELECT CURRENT_TIME() + 0;
SELECT CURRENT_TIME;
SELECT CURRENT_TIME + 0;

NOW(), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP, LOCALTIMESTAMP(), LOCALTIMESTAMP, LOCALTIME(), LOCALTIME 函数

1
2
3
4
5
6
7
SELECT NOW();
SELECT CURRENT_TIMESTAMP();
SELECT CURRENT_TIMESTAMP;
SELECT LOCALTIMESTAMP();
SELECT LOCALTIMESTAMP;
SELECT LOCALTIME();
SELECT LOCALTIME;

DATE_ADD() 函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL +1 YEAR);
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL +1 QUARTER);
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL +1 MONTH);
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL +1 DAY);
SELECT DATE_ADD(CURRENT_TIME(), INTERVAL +1 HOUR);
SELECT DATE_ADD(CURRENT_TIME(), INTERVAL +1 MINUTE);
SELECT DATE_ADD(CURRENT_TIME(), INTERVAL +60 SECOND);
SELECT DATE_ADD(CURRENT_TIME(), INTERVAL +5000 MICROSECOND);
SELECT DATE_ADD(NOW(), INTERVAL +1 YEAR);
SELECT DATE_ADD(NOW(), INTERVAL +1 MONTH);
SELECT DATE_ADD(NOW(), INTERVAL +1 WEEK);

DATE_FORMAT(), STR_TO_DATE() 函数

名称描述备注
%a一星期中每天名称的缩写(Sun…Sat)
%b月份的缩写(Jan…Dec)
%c月份的数字表现形式(0…12)
%D带有英语后缀的一个月中的每一天的名称(0th、1st、2nd、3rd)
%d用数字形式表现的每月中的每一天(00…31)
%e用数字形式表现的每月中的每一天(0…31)
%f毫秒(000000…999999)
%H24 时制显示的小时(00…23)
%h12 时制显示的小时(01…12)
%I12 时制显示的小时(01…12)
%i以数字形式表现的分钟数(00…59)
%j一年中的每一天(001…366)
%k24 时制小时的另一种表现格式(0…23)
%l12 时制小时的另一种表现格式(1…12)
%M用完整英文名称表示的月份(January…December)
%m用数字表现的月份(00…12)
%p上午(AM)或下午(PM)
%r12 时制的时间值(hh:mm:ss, 后跟 AM 或 PM)
%S秒(00…59)
%s秒(00…59)
%T24 时制的小时(hh:mm:ss)
%U星期(00…53), 其中星期天是每星期的开始日
%u星期(00…53), 其中星期一是每星期的开始日
%V星期(01…53), 其中星期天是每星期的开始日, 和 %X 一起使用
%v星期(01…53), 其中星期一是每星期的开始日, 和 %x 一起使用
%W一星期中各日名称(Sunday…Saturday)
%w一星期中各日名称(0 代表星期日, 6 代表星期六, 以此类推)
%X某星期所处年份. 其中, 星期天是每星期的开始日, 采用 4 位数字形式表现, 和 %V一起使用
%x某星期所处年份. 其中, 星期一是每星期的开始日, 采用 4 位数字形式表现, 和 %V 一起使用
%Y4 位数字表示的年份
%y2 位数字表示的年份
%%符号 % 的字面值
%x(x为斜体)字符 x 的字面值, x 指以上未列出的任何字符
1
2
3
4
5
6
7
8
SELECT DATE_FORMAT(NOW(), '%Y年-%m月-%d号 %p %H时%i分%s秒');
SELECT DATE_FORMAT(NOW(), '%Y %M %D %p %H:%m:%s %W %u %j');
SELECT STR_TO_DATE('February 1 2018', '%M %d %Y');
SELECT STR_TO_DATE('March,8,2018', '%M,%e,%Y');
SELECT STR_TO_DATE('Friday, July 28, 2018', '%W, %M %e, %Y');
SELECT STR_TO_DATE('2018,10,1 9', '%Y,%m,%d %h');
SELECT STR_TO_DATE('2018,6,2 21,30,01', '%Y,%m,%d %H,%i,%s');
SELECT STR_TO_DATE('16,3,33', '%H,%i,%s');

DATE_SUB(), SUBDATE() 函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SELECT DATE_SUB(CURRENT_DATE(), INTERVAL +1 YEAR);
SELECT DATE_SUB(CURRENT_DATE(), INTERVAL +1 QUARTER);
SELECT DATE_SUB(CURRENT_DATE(), INTERVAL +1 MONTH);
SELECT DATE_SUB(CURRENT_DATE(), INTERVAL +1 DAY);
SELECT DATE_SUB(CURRENT_TIME(), INTERVAL +1 HOUR);
SELECT DATE_SUB(CURRENT_TIME(), INTERVAL +1 MINUTE);
SELECT DATE_SUB(CURRENT_TIME(), INTERVAL +60 SECOND);
SELECT DATE_SUB(CURRENT_TIME(), INTERVAL +5000 MICROSECOND);
SELECT DATE_SUB(NOW(), INTERVAL +1 YEAR);
SELECT DATE_SUB(NOW(), INTERVAL +1 MONTH);
SELECT DATE_SUB(NOW(), INTERVAL +1 WEEK);
SELECT SUBDATE(CURRENT_TIMESTAMP(6), INTERVAL 4 MICROSECOND);
SELECT SUBDATE(NOW(), INTERVAL 60 SECOND);
SELECT SUBDATE(LOCALTIMESTAMP(), INTERVAL 30 MINUTE);
SELECT SUBDATE(LOCALTIME(), INTERVAL 2 HOUR);
SELECT SUBDATE(CURDATE(), INTERVAL 10 DAY);
SELECT SUBDATE(CURRENT_DATE(), 10);
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 4 WEEK);
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 3 MONTH);
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 2 QUARTER);
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 1 YEAR);
SELECT SUBDATE('2019-01-01 00:00:10.000001', INTERVAL '10.000001' SECOND_MICROSECOND);
SELECT SUBDATE('2019-01-01 00:02:10.000001', INTERVAL '2:10.000001' MINUTE_MICROSECOND);
SELECT SUBDATE(NOW(), INTERVAL '3:30' MINUTE_SECOND);
SELECT SUBDATE('2019-01-01 01:03:10.000001', INTERVAL '1:03:10.000001' HOUR_MICROSECOND);
SELECT SUBDATE(NOW(), INTERVAL '1:30:30' HOUR_SECOND);
SELECT SUBDATE(NOW(), INTERVAL '1:01' HOUR_MINUTE);
SELECT SUBDATE('2019-01-01 00:02:10.000001', INTERVAL '10 1:03:12.000001' DAY_MICROSECOND);
SELECT SUBDATE(NOW(), INTERVAL '7 1:30:30' DAY_SECOND);
SELECT SUBDATE(CURRENT_TIMESTAMP(), INTERVAL '7 1:30' DAY_MINUTE);
SELECT SUBDATE(LOCALTIME(), INTERVAL '7 1' DAY_HOUR);
SELECT SUBDATE(CURDATE(), INTERVAL '5-3' YEAR_MONTH);

DATEDIFF() 函数

1
2
3
4
5
SELECT DATEDIFF(DATE_ADD(CURDATE(), INTERVAL + 1 DAY), CURDATE());
SELECT DATEDIFF(DATE_ADD(CURRENT_DATE(), INTERVAL + 1 DAY), CURRENT_DATE());
SELECT DATEDIFF(DATE_ADD(CURTIME(), INTERVAL + 1 DAY), CURTIME());
SELECT DATEDIFF(DATE_ADD(CURRENT_TIME(), INTERVAL + 1 DAY), CURRENT_TIME());
SELECT DATEDIFF(CURDATE(), DATE_SUB(CURRENT_DATE(), INTERVAL +1 DAY));

DAY(), DAYOFMONTH() 函数

1
2
3
4
5
6
7
8
SELECT DAY(CURRENT_DATE());
SELECT DAY(CURRENT_TIME());
SELECT DAY(NOW());
SELECT DAY('2016-12-31 23:59:59');
SELECT DAYOFMONTH(CURRENT_DATE());
SELECT DAYOFMONTH(CURRENT_TIME());
SELECT DAYOFMONTH(NOW());
SELECT DAYOFMONTH('2016-12-31 23:59:59');

DAYNAME() 函数

1
2
3
4
5
6
SELECT DAYNAME(CURDATE());
SELECT DAYNAME(CURRENT_DATE());
SELECT DAYNAME(CURTIME());
SELECT DAYNAME(CURRENT_TIME());
SELECT DAYNAME(CURRENT_TIMESTAMP());
SELECT DAYNAME(NOW());

DAYOFWEEK() 函数

1
2
3
4
SELECT DAYOFWEEK(CURDATE());
SELECT DAYOFWEEK(CURRENT_DATE());
SELECT DAYOFWEEK(NOW());
SELECT DAYOFWEEK(LOCALTIMESTAMP());

DAYOFYEAR() 函数

1
2
3
4
SELECT DAYOFYEAR(CURDATE());
SELECT DAYOFYEAR(CURRENT_DATE());
SELECT DAYOFYEAR(NOW());
SELECT DAYOFYEAR(LOCALTIMESTAMP());

EXTRACT() 函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
SELECT EXTRACT(MICROSECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(MINUTE FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(DAY FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(WEEK FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(MONTH FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(QUARTER FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(SECOND_MICROSECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(MINUTE_MICROSECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(MINUTE_SECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(HOUR_MICROSECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(HOUR_SECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(DAY_MICROSECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(DAY_SECOND FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(DAY_MINUTE FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(DAY_HOUR FROM CURRENT_TIMESTAMP(6));
SELECT EXTRACT(YEAR_MONTH FROM CURRENT_TIMESTAMP(6));

FROM_DAYS() 函数

1
2
3
SELECT FROM_DAYS('736644');
SELECT FROM_DAYS('737009');
SELECT FROM_DAYS('737374');

HOUR() 函数

1
2
3
4
5
SELECT HOUR(CURTIME());
SELECT HOUR(CURRENT_TIME());
SELECT HOUR(CURRENT_TIMESTAMP());
SELECT HOUR(NOW());
SELECT HOUR(LOCALTIMESTAMP());

LAST_DAY() 函数

1
2
3
SELECT LAST_DAY(CURDATE());
SELECT LAST_DAY(DATE_SUB(CURDATE(), INTERVAL +1 YEAR));
SELECT LAST_DAY(DATE_ADD(CURDATE(), INTERVAL +1 QUARTER));

MAKEDATE() 函数

1
2
3
4
5
6
SET @YEAR = '2018';
SELECT MAKEDATE(@YEAR, 1);
SELECT MAKEDATE(@YEAR, 100);
SELECT MAKEDATE(@YEAR, 200);
SELECT MAKEDATE(@YEAR, 365);
SELECT MAKEDATE(@YEAR, 366);

MAKETIME() 函数

1
2
3
4
5
SELECT MAKETIME(11, 8, 1);
SELECT MAKETIME(16, 59, 0);
SELECT MAKETIME(23, 59, 59);
SELECT MAKETIME(2017, 59, 59);
SELECT MAKETIME(-2017, 59, 59);

MICROSECOND() 函数

1
2
3
4
5
6
SELECT MICROSECOND(CURRENT_TIMESTAMP(6));
SELECT MICROSECOND('2018-12-31 23:59:59.000001');
SELECT MICROSECOND('2018-12-31 23:59:59.999999');
SELECT MICROSECOND(CURRENT_DATE());
SELECT MICROSECOND('12:59:59.141592');
SELECT MICROSECOND('838:58:59.001234');

MINUTE() 函数

1
2
3
4
5
6
SELECT MINUTE(CURTIME());
SELECT MINUTE(CURRENT_TIME());
SELECT MINUTE(CURRENT_TIMESTAMP(6));
SELECT MINUTE(NOW());
SELECT MINUTE('2018:59:59.001234');
SELECT MINUTE(LOCALTIME());

MONTH() 函数

1
2
3
4
SELECT MONTH(CURDATE());
SELECT MONTH(CURRENT_DATE());
SELECT MONTH(CURRENT_TIMESTAMP(6));
SELECT MONTH(LOCALTIMESTAMP());

MONTHNAME() 函数

1
2
3
4
SELECT MONTHNAME(CURDATE());
SELECT MONTHNAME(CURRENT_DATE());
SELECT MONTHNAME(CURRENT_TIMESTAMP());
SELECT MONTHNAME(LOCALTIMESTAMP());

PERIOD_ADD() 函数

1
2
3
4
5
6
SET @YEAR = '201806';
SELECT PERIOD_ADD(@YEAR, 2);
SELECT PERIOD_ADD(@YEAR, 7);
SELECT PERIOD_ADD(@YEAR, -7);
SELECT PERIOD_ADD('1806', 7);
SELECT PERIOD_ADD('1806', -7);

PERIOD_DIFF() 函数

1
2
3
4
5
SELECT PERIOD_DIFF(201806, 201804);
SELECT PERIOD_DIFF(201806, 201812);
SELECT PERIOD_DIFF(1806, 1812);
SELECT PERIOD_DIFF(1806, 200812);
SELECT PERIOD_DIFF(201806, 0812);

QUARTER() 函数

1
2
3
4
5
6
7
8
SELECT QUARTER(CURDATE());
SELECT QUARTER(CURRENT_DATE());
SELECT QUARTER(CURRENT_TIMESTAMP());
SELECT QUARTER(NOW());
SELECT QUARTER(LOCALTIME());
SELECT QUARTER(LOCALTIMESTAMP());
SELECT QUARTER(DATE_ADD(CURRENT_DATE(), INTERVAL +6 MONTH));
SELECT QUARTER(DATE_SUB(CURRENT_DATE(), INTERVAL -3 MONTH));

SECOND() 函数

1
2
3
4
5
6
SELECT SECOND(CURTIME());
SELECT SECOND(CURRENT_TIME());
SELECT SECOND(CURRENT_TIMESTAMP());
SELECT SECOND(NOW());
SELECT SECOND(LOCALTIME());
SELECT SECOND(LOCALTIMESTAMP());

SEC_TO_TIME() 函数

1
2
3
4
5
6
SELECT SEC_TO_TIME(1);
SELECT SEC_TO_TIME(2);
SELECT SEC_TO_TIME(3600);
SELECT SEC_TO_TIME(360000);
SELECT SEC_TO_TIME(5000);
SELECT SEC_TO_TIME(-5000);

SECOND() 函数

1
2
3
4
5
SELECT SECOND(CURTIME());
SELECT SECOND(CURRENT_TIME());
SELECT SECOND(CURRENT_TIMESTAMP(6));
SELECT SECOND(NOW());
SELECT SECOND('3600:11:59');

SUBTIME() 函数

1
2
3
4
5
6
7
8
SELECT SUBTIME('2019-01-01 00:00:10.000001', '2.000001');
SELECT SUBTIME('2019-01-01 00:00:10.000001', '3:2.000001');
SELECT SUBTIME('2019-01-01 00:00:10.000001', '4:3:2.000001');
SELECT SUBTIME('2019-01-01 00:00:10.000001', '5 4:3:2.000001');
SELECT SUBTIME('12:59:59.999999', '0.000001');
SELECT SUBTIME('01:01:01.999998', '5.000001');
SELECT SUBTIME('01:01:01.000001', '8:01:01.003441');
SELECT SUBTIME('01:02:03.000001', '-8:01:01.003441');

SYSDATE() 函数

1
2
3
SELECT SYSDATE();
SELECT SYSDATE() + 0;
SELECT SYSDATE() + 1;

TIME() 函数

1
2
3
4
SELECT TIME(LOCALTIMESTAMP(6));
SELECT TIME(NOW());
SELECT TIME(CURRENT_TIME());
SELECT TIME(NULL);

TIME_FORMAT() 函数

名称描述备注
%f毫秒(000000…999999)
%H24 时制显示的小时(00…23)
%h12 时制显示的小时(01…12)
%I12 时制显示的小时(01…12)
%i以数字形式表现的分钟数(00…59)
%p上午(AM)或下午(PM)
%r12 时制的时间值(hh:mm:ss, 后跟 AM 或 PM)
%S秒(00…59)
%s秒(00…59)
%T24 时制的小时(hh:mm:ss)
1
2
3
4
5
6
SELECT TIME_FORMAT(CURTIME(), '%H %i %s');
SELECT TIME_FORMAT(CURRENT_TIME(), '%h:%i:%s %p');
SELECT TIME_FORMAT(CURRENT_TIME, '%h:%i %p');
SELECT TIME_FORMAT('18:50:30.000001', '%r');
SELECT TIME_FORMAT('18:50:30.000001', '%T');
SELECT TIME_FORMAT('18:50:30.000001', '%f');

TIME_TO_SEC() 函数

1
2
3
4
5
6
SELECT TIME_TO_SEC('00:00:01');
SELECT TIME_TO_SEC('00:00:01.999999');
SELECT TIME_TO_SEC('00:00:02');
SELECT TIME_TO_SEC(CURTIME());
SELECT TIME_TO_SEC(NOW());
SELECT TIME_TO_SEC('-1:00:00');

TIMEDIFF() 函数

1
2
3
4
SELECT TIMEDIFF(NOW(), SUBDATE(LOCALTIME(), INTERVAL 1 SECOND));
SELECT TIMEDIFF(CURTIME(), SUBTIME(CURTIME(), '1:00:00'));
SELECT TIMEDIFF(SUBTIME(CURTIME(), '1:00:00'), CURTIME());
SELECT TIMEDIFF(NOW(), CURTIME());

TIMESTAMP() 函数

1
2
3
SELECT TIMESTAMP(CURDATE());
SELECT TIMESTAMP(CURDATE(), CURTIME());
SELECT TIMESTAMP(NOW(), '02:00:00');

TIMESTAMPADD() 函数

1
2
3
4
5
6
7
8
SELECT TIMESTAMPADD(SECOND, 3600, CURTIME());
SELECT TIMESTAMPADD(MINUTE, 60, CURTIME());
SELECT TIMESTAMPADD(HOUR, 1, CURTIME());
SELECT TIMESTAMPADD(DAY, 1, CURDATE());
SELECT TIMESTAMPADD(WEEK, 1, CURDATE());
SELECT TIMESTAMPADD(MONTH, 1, CURDATE());
SELECT TIMESTAMPADD(QUARTER, 1, CURDATE());
SELECT TIMESTAMPADD(YEAR, 1, CURDATE());

TIMESTAMPDIFF() 函数

1
2
3
4
5
6
7
SELECT TIMESTAMPDIFF(SECOND, CURDATE(), ADDDATE(CURDATE(), INTERVAL 3600 SECOND));
SELECT TIMESTAMPDIFF(MINUTE, CURDATE(), ADDDATE(CURDATE(), INTERVAL 60 MINUTE));
SELECT TIMESTAMPDIFF(HOUR, CURDATE(), ADDDATE(CURDATE(), INTERVAL 1 HOUR));
SELECT TIMESTAMPDIFF(DAY, CURDATE(), ADDDATE(CURDATE(), INTERVAL 1 DAY));
SELECT TIMESTAMPDIFF(WEEK, CURDATE(), ADDDATE(CURDATE(), INTERVAL 1 MONTH));
SELECT TIMESTAMPDIFF(MONTH, CURDATE(), ADDDATE(CURDATE(), INTERVAL 1 QUARTER));
SELECT TIMESTAMPDIFF(YEAR, CURDATE(), ADDDATE(CURDATE(), INTERVAL 1 YEAR));

TO_DAYS() 函数

1
2
3
4
5
SELECT TO_DAYS(CURDATE());
SELECT TO_DAYS('19-01-01');
SELECT TO_DAYS(NOW());
SELECT TO_DAYS('0000-01-01');
SELECT TO_DAYS('0000-00-00');

WEEK() 函数

1
2
3
4
5
6
SELECT WEEK(CURDATE());
SELECT WEEK(CURRENT_DATE());
SELECT WEEK(CURRENT_TIMESTAMP());
SELECT WEEK(NOW());
SELECT WEEK(LOCALTIME());
SELECT WEEK(LOCALTIMESTAMP());

WEEKDAY() 函数

1
2
3
4
5
6
SELECT WEEKDAY(CURDATE());
SELECT WEEKDAY(CURRENT_DATE());
SELECT WEEKDAY(CURRENT_TIMESTAMP());
SELECT WEEKDAY(NOW());
SELECT WEEKDAY(LOCALTIME());
SELECT WEEKDAY(LOCALTIMESTAMP());

WEEKOFYEAR() 函数

1
2
3
4
5
6
SELECT WEEKOFYEAR(CURDATE());
SELECT WEEKOFYEAR(CURRENT_DATE());
SELECT WEEKOFYEAR(CURRENT_TIMESTAMP());
SELECT WEEKOFYEAR(NOW());
SELECT WEEKOFYEAR(LOCALTIME());
SELECT WEEKOFYEAR(LOCALTIMESTAMP());

YEAR() 函数

1
2
3
4
5
6
SELECT YEAR(CURDATE());
SELECT YEAR(CURRENT_DATE());
SELECT YEAR(CURRENT_TIMESTAMP());
SELECT YEAR(NOW());
SELECT YEAR(LOCALTIME());
SELECT YEAR(LOCALTIMESTAMP());

YEARWEEK() 函数

1
2
3
4
5
6
SELECT YEARWEEK(CURDATE());
SELECT YEARWEEK(CURRENT_DATE());
SELECT YEARWEEK(CURRENT_TIMESTAMP());
SELECT YEARWEEK(NOW());
SELECT YEARWEEK(LOCALTIME());
SELECT YEARWEEK(LOCALTIMESTAMP());

UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP() 函数

1
2
3
SELECT UTC_DATE();
SELECT UTC_TIME();
SELECT UTC_TIMESTAMP();

日期时间和时间戳转换

1
2
3
4
5
// 当前日期时间转换为时间戳
SELECT UNIX_TIMESTAMP(NOW());

// 时间戳转换为日期时间
SELECT FROM_UNIXTIME('1478793600');

参考