MySQL 日期函数

MySQL 提供了多种日期和时间函数来处理日期,例如查找当前日期、时间、格式化、提取日期部分、时间部分等。

MySQL 日期函数

以下是可用于处理日期和时间的所有 MySQL 日期函数列表。您可以点击每个日期和时间函数以查看其详细信息和多个示例。或者,向下滚动以查看每个日期和时间函数的示例。

MySQL 日期和时间函数描述
ADDDATE()将给定的日期加上时间间隔。
ADDTIME()添加时间
CONVERT_TZ()将日期和时间从一个时区转换为另一个时区。
CURDATE()返回当前日期
CURRENT_DATE, CURRENT_DATE()此函数是 CURDATE() 的同义词
CURRENT_TIME(), CURRENT_TIMECURTIME() 函数的同义词
CURRENT_TIMESTAMP() ,CURRENT_TIMESTAMPNOW() 函数的同义词
CURTIME()这个 MySQL 函数返回当前时间
DATE()从给定的日期或日期时间表达式中提取日期部分
DATE_ADD()将给定的时间间隔添加到日期表达式中
DATE_FORMAT()此方法按照我们的要求格式化日期。
DATE_SUB()从给定的日期中减去指定的时间间隔。
DATEDIFF()从一个日期减去另一个日期并返回差值。
DAY()DAYOFMONTH() 函数的同义词。
DAYNAME()此 MySQL 日期函数返回星期几的名称。例如星期一
DAYOFMONTH()返回月份中的第几天,从 1 到 31
DAYOFWEEK()返回用户给定日期的星期索引。
DAYOFYEAR()返回一年中的第几天或天数,即 1 到 366
EXTRACT()使用此函数提取日期的部分。
FROM_DAYS()此日期函数将给定的天数转换为日期。
FROM_UNIXTIME()用于将 Unix 时间戳格式化为日期
GET_FORMAT()此函数返回日期格式字符串。
HOUR()返回给定时间的小时值。
LAST_DAY返回给定日期的月份中的最后一天。
LOCALTIME(), LOCALTIMENOW() 函数的同义词
LOCALTIMESTAMP(), LOCALTIMESTAMPNOW() 函数的同义词
MAKEDATE()用于从指定的年份和一年中的天数创建或生成日期。
MAKETIME()这将从小时、分钟、秒创建或生成时间
MICROSECOND()返回给定时间或日期时间中的微秒部分。
MINUTE()此 MySQL 日期函数返回给定时间或日期时间中的分钟值。
MONTH()返回月份编号 (1 – 12)
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()此 MySQL 日期函数从给定的日期时间或表达式中提取时间部分。
TIME_FORMAT()使用此函数将给定的表达式格式化为时间。
TIME_TO_SEC()此方法将给定时间转换为秒。
TIMEDIFF()减去时间。
TIMESTAMP()返回日期或日期时间表达式。
TIMESTAMPADD()将期间添加到日期时间表达式中
TIMESTAMPDIFF()此函数从给定的日期时间表达式中减去期间。
TO_DAYS()将给定的日期转换为总天数。
TO_SECONDS()将给定的日期或日期时间表达式转换为自公元元年以来的秒数。
UNIX_TimeStamp用于返回 Unix 时间戳
UTC_Date返回当前的 UTC 日期
UTC_Time此方法返回当前的 UTC 时间 
UTC_TimeStamp返回当前的 UTC 日期和时间。
Week此方法返回周数
Weekday返回星期几的索引
WeekOfYear返回日期的日历周。范围从 1 到 53
Year返回年份值。
YearWeek返回年份和周数

MySQL 中日期和时间函数的时态间隔

以下是可用的时态间隔表达式和单位值列表。

UNIT VALUE预期表达式格式
MICROSECONDMICROSECONDS
SECONDSECONDS
MINUTEMINUTES
HOURHOURS
DAYDAYS
WEEKWEEKS
MONTHMONTHS
QUARTERQUARTERS
YEARYEARS
SECOND_MICROSECOND‘SECONDS.MICROSECONDS’
MINUTE_MICROSECOND‘MINUTES:SECONDS.MICROSECONDS’
MINUTE_SECOND‘MINUTES:SECONDS’
HOUR_MICROSECOND‘HOURS:MINUTES:SECONDS.MICROSECONDS’
HOUR_SECOND‘HOURS:MINUTES:SECONDS’
HOUR_MINUTE‘HOURS:MINUTES’
DAY_MICROSECOND‘DAYS HOURS:MINUTES:SECONDS.MICROSECONDS’
DAY_SECOND‘DAYS HOURS:MINUTES:SECONDS’
DAY_MINUTE‘DAYS HOURS:MINUTES’
DAY_HOUR‘DAYS HOURS’
YEAR_MONTH‘YEARS-MONTHS’

MySQL 日期和时间函数示例

以下示例将帮助您理解 MySQL 中的这些日期和时间函数。

ADDDATE, ADDTIME, CONVERT_TZ 函数

在此示例中,我们将使用 ADDDATE 和 ADDTIME 来添加给定的值。接下来,我们使用 CONVERT_TZ 将日期从一个标准转换为另一个标准。

SELECT ADDDATE('2016-01-02', INTERVAL 2 MONTH), ADDDATE('2018-02-01', INTERVAL 31 DAY);

SELECT ADDTIME('2018-12-31 23:55:57', '2 2:22:22');

SELECT CONVERT_TZ('2018-12-31 23:59:59', '+00:00', '-05:30');
MySQL Date Functions 1

MySQL CURDATE 和 CURRENT_DATE 日期函数

在此示例中,我们将使用 CURDATE(), CURRENT_DATE 和 CURRENT_DATE() 方法来查找当前日期。

SELECT CURDATE(), CURDATE() + 5;

SELECT CURRENT_DATE, CURRENT_DATE + 2;

SELECT CURRENT_DATE(), CURRENT_DATE() + 10;
MySQL Date Functions 2

MySQL curtime, current_time 时间函数

在此示例中,我们将使用 CURTIME, CURRENT_TIME(), CURRENT_TIME 来查找当前时间。

SELECT CURTIME(), CURTIME() + 1;

SELECT CURRENT_TIME(), CURRENT_TIME() + 10;

SELECT CURRENT_TIME, CURRENT_TIME + 2;
MySQL Time Functions 3

在此日期函数示例中,我们将使用 DATE 获取日期,使用 DATEDIFF 计算两个日期之间的差值。接下来,我们使用 DATE_ADD 添加日期间隔。

SELECT DATE('2018-12-31 12:59:59'), DATE('2012-11-18 11:22:33');

SELECT DATEDIFF('2018-12-31', '2019-02-03'), DATEDIFF('2018-12-01', '2018-02-01');

SELECT DATE_ADD('2018-12-31', INTERVAL 2 DAY), DATE_ADD('2018-12-31', INTERVAL 2 YEAR);
MySQL Date Functions 4

MySQL date_format, date_sub, day 日期函数

在此示例中,我们将使用 DATE_FORMAT 来格式化给定的日期。 DATE_SUB 用于从中减去间隔。接下来,我们使用 DAY 返回日期的值。

SELECT DATE_FORMAT('2018-12-31 23:59:59', '%W, %D %M %Y');

SELECT DATE_SUB('2018-12-31', INTERVAL 12 DAY), DATE_SUB('2018-12-31', INTERVAL 2 YEAR);

SELECT DAY('2018-12-31'), DAY('2018-01-01');
DATE_FORMAT, DATE_SUB, and DAY Examples 5

在此日期函数示例中,我们将使用 DAYNAME 和 DAYOFMONTH 方法获取日期的名称,以及月份中的第几天。接下来,我们使用 DAYOFWEEK 获取星期几的索引号。

SELECT DAYNAME('2018-12-31'), DAYNAME('2019-01-01');

SELECT DAYOFMONTH('2018-12-14'), DAYOFMONTH('2019-01-31');

SELECT DAYOFWEEK('2018-12-14'), DAYOFWEEK('2019-01-31');
DAYNAME, DAYOFMONTH, and DAYOFWEEK 6

MySQL 日期函数 – extract, from_days, from_unixtime

在这里,我们使用 EXTRACT 从日期中提取日期部分。使用 FROM_DAYS 从给定的天数返回日期。使用 FROM_UNIXTIME 将 Unix 时间戳格式化为日期和时间。

SELECT EXTRACT(YEAR FROM '2019-07-02'), EXTRACT(MONTH FROM '2018-12-31');

SELECT FROM_DAYS(100000), FROM_DAYS(950010);

SELECT FROM_UNIXTIME(122227899), FROM_UNIXTIME(1233456789);
EXTRACT, FROM_DAYS, and FROM_UNIX examples 7

在此示例中,我们将使用 HOUR 获取小时值,LAST_DAY 获取月份中的最后一天。这里,GET_FORMAT 需要与 DATE_FORMAT 或 STR_TO_DATE 一起使用。

SELECT DATE_FORMAT('2018-12-31', GET_FORMAT(DATE, 'EUR'));

SELECT HOUR('12:22:33'), HOUR('23:59:59'), HOUR('2019-01-02 17:12:13');

SELECT LAST_DAY('2018-04-12'), LAST_DAY('2018-02-05');
HOUR and LAST_DAY Example 8

MySQL 日期函数 – localtime, local timestamp

在此示例中,我们将使用 LOCALTIME, LOCALTIME(), 和 LOCALTIMESTAMP 来获取当前日期和时间。

SELECT LOCALTIME, LOCALTIME + 1;

SELECT LOCALTIME(), LOCALTIME() + 15;

SELECT LOCALTIMESTAMP, LOCALTIMESTAMP + 4;
MySQL Time Functions 9

LOCALTIMESTAMP 和 CURRENT_TIMESTAMP 示例 10

在此示例中,我们使用 LOCALTIMESTAMP(), CURRENT_TIMESTAMP, 和 CURRENT_TIMESTAMP() 方法来获取当前日期和时间。

SELECT LOCALTIMESTAMP(), LOCALTIMESTAMP() + 10;

SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + 10;

SELECT CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP() + 10;
MySQL Date and Time Functions 10

MySQL 日期函数 – makedate, maketime, microsecond

在此示例中,我们使用 MAKEDATE 从年份和一年中的天数创建日期。接下来,使用 MAKETIME 从小时、分钟和秒创建时间。然后,我们使用 MICROSECOND 提取或返回微秒值。

SELECT MAKEDATE(2018, 28), MAKEDATE(2018, 364);

SELECT MAKETIME(10, 11, 22), MAKETIME(23, 59, 58);

SELECT MICROSECOND('10:22:33.324567'), MICROSECOND('19:11:22.112233');
MAKEDATE, MAKETIME, microsecond Example 11

MINUTE 和 MONTH NAME 示例 12

在这里,我们将使用 MINUTE 获取分钟值。接下来,我们使用 MONTH 和 MONTHNAME 获取月份编号和月份名称(月份的名称)。

SELECT MINUTE('10:22:33.324567'), MINUTE('2018-02-04 19:11:22');

SELECT MONTH('2018-12-31'), MONTH('2018-02-04 19:11:22');

SELECT MONTHNAME('2018-12-31'), MONTHNAME('2018-01-04 19:11:22');
MINUTE,MONTH, MONTH NAME Example 12

now, period_add, period_diff 示例

在此示例中,我们将使用 NOW 来获取当前日期和时间。接下来,我们使用 PERIOD_ADD 和 PERIOD_DIFF 来添加月份和计算两个期间之间的差异。

SELECT NOW(), NOW() + 5;

SELECT PERIOD_ADD(201801, 3), PERIOD_ADD(201802, 10);

SELECT PERIOD_DIFF(201812, 201907), PERIOD_DIFF(201812, 201802);
NOW,PERIOD_ADD, and PERIOD_DIFF Example 13

MySQL second, sec_to_time, and str_to_date 日期函数

在此示例中,我们将使用 SECOND 获取秒数,SEC_TO_TIME 将给定的秒数转换为时间。接下来,我们使用 STR_TO_DATE 将字符串转换为日期。

SELECT SECOND('10:22:33.324567'), SECOND('2018-02-04 19:11:22');

SELECT SEC_TO_TIME(3652), SEC_TO_TIME(9875);

SELECT STR_TO_DATE('April 1, 2018', '%M %d, %Y'); 
SECOND, SEC_TO_TIME and STR_TO_DATE Example 14

SUBDATE, SUBTIME, and SYSDATE 示例

在此示例中,我们将使用 SUBDATESUBTIME 从给定的日期或时间中减去日期或时间间隔。接下来,我们使用 SYSDATE 返回系统日期时间。

SELECT SUBDATE('2018-12-31', INTERVAL 15 DAY), SUBDATE('2018-12-31', INTERVAL 2 YEAR);

SELECT SUBTIME('2018-12-31 10:11:12', '3 13:48:47');

SELECT SYSDATE(), SYSDATE() + 2;
SUBDATE, SUBTIME, and SYSDATE Example 15

TIME, TIMEDIFF, and TIMESTAMP 示例 16

在此示例中,我们将使用 TIME 获取时间,使用 TIMEDIFF 计算两个时间值之间的差值。接下来,我们使用 TIMESTAMP 返回日期时间。

SELECT TIME('2018-01-31 10:22:33.324567'), TIME('2018-02-04 19:11:22');

SELECT TIMEDIFF('2018-12-31 23:59:59.111222', '2018-12-30 01:10:10.333444');

SELECT TIMESTAMP('2018-12-31'), TIMESTAMP('2018-12-31 23:59:59');
TIME, TIMEDIFF, and TIMESTAMP 16

MySQL 时间函数 – timestampadd, time_format, timestampdiff

在此示例中,我们将使用 TIMESTAMPADD 添加时间间隔到日期,使用 TIMESTAMPDIFF 计算两个时间戳之间的差值。接下来,我们使用 TIME_FORMAT 格式化给定的时间。

SELECT TIMESTAMPADD(HOUR, 13, '2018-01-31 10:22:33'), TIMESTAMPADD(MINUTE, 48, '2018-02-04 19:11:22');

SELECT TIMESTAMPDIFF(MONTH, '2018-01-31', '2018-12-30'), TIMESTAMPDIFF(MINUTE,'2018-02-04', '2018-02-04 19:11:22');

SELECT TIME_FORMAT('4:12:13', '%k %i %S');
TIMESTAMPADD, TIMESTAMPDIFF, and TIME_FORMAT example 17

TIME_TO_SECONDS 和 TO_DAYS 示例

在此 MySQL 日期函数示例中,我们将使用 TIME_TO_SECONDS 将给定的时间转换为秒数。接下来,我们使用 TO_DAYS 返回天数。

SELECT TIME_FORMAT('4:12:13', '%k %i %S');

SELECT TIME_TO_SEC('23:59:59'), TIME_TO_SEC('10:10:00');

SELECT TO_DAYS('1947-08-15'), TO_DAYS('2018-12-31');
TIME_FORMAT, TIME_TO_SECONDS and TO_DAYS Example 18

在这里,我们使用 TO_SECONDS 将日期转换为秒,并使用 UNIX_TIMESTAMP 返回 Unix 时间戳。接下来,我们使用 UTC_DATE 获取 UTC 日期值。

SELECT TO_SECONDS('1947-08-15'), TO_SECONDS('2018-12-31');

SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP('2018-12-31 23:59:59');

SELECT UTC_DATE, UTC_DATE();
TO_SECONDS, UNIX_TIMESTAMP, and UNIX_DATE Example 19

WEEK, UTC_TIME, and UTC_TIMESTAMP 示例

我们使用 UTC_TIME 获取时间,使用 UTC_TIMESTAMP 计算 UTC 日期时间。接下来,我们使用 WEEK 获取周数。

SELECT UTC_TIME, UTC_TIME();

SELECT UTC_TIMESTAMP, UTC_TIMESTAMP();

SELECT WEEK('2018-12-31'), WEEK('2018-12-31', 1);
UTC_TIME and UTC_TIMESTAMP Example 20

WEEKDAY, WEEKOFYEAR, and YEAR 示例

在此示例中,我们将使用 WEEKDAY 获取索引号,WEEKOFYEAR 计算日历周。接下来,我们使用 YEAR 从给定的日期中获取年份值。

SELECT WEEKDAY('2018-03-31'), WEEKDAY('2018-12-04 23:59:59');

SELECT WEEKOFYEAR('2018-12-31'), WEEKOFYEAR('2018-12-04 23:59:59');

SELECT YEAR('1947-08-15'), YEAR('2018-12-31');
WEEKDAY, WEEKOFYEAR, and YEAR Example 21

在此示例中,我们使用 YEARWEEK 函数从给定的日期返回年份和周数。

SELECT YEARWEEK('1947-08-15'), YEARWEEK('2018-12-31');
MySQL Date and Time Functions 22