讨论常用的 MySQL 日期函数。
日期函数和运算符用于日期和时间类型的数据进行操作并返回一个结果。以下是 MySQL 中常见的日期函数和运算符:
ADDDATE()、DATE_ADD(),为日期时间增加一个时间间隔
ADDTIME(),增加指定时间
CONVERT_TZ(),将日期时间从一个时区转换为另一个时区
CURDATE()、CURRENT_DATE()、CURRENT_DATE,返回当前日期
CURTIME()、CURRENT_TIME()、CURRENT_TIME,返回当前时间
CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP、e data-draft-node=“block” data-draft-type=“table” data-size=“normal” data-row-style=“normal”>、LOCALTIMESTAMP()、LOCALTIMESTAMP,返回当前日期和时间
DATE(),获取日期时间中的日期部分
DATE_FORMAT(),将日期时间格式化成字符串
DATE_SUB()、SUBDATE(),从日期时间中减去一个时间间隔
DATEDIFF(),计算两个日期之间的天数
DAY()、DAYOFMONTH(),返回日期属于一月中的第几天(0-31)
DAYNAME(),返回日期是星期几
DAYOFWEEK(),返回日期是一星期中的第几天(1 = 星期天)
DAYOFYEAR(),返回日期是一年中的第几天(1-366)
EXTRACT(),获取日期时间中某个部分,例如年、月、时、分等
FROM_DAYS(),将一个数字形式的天数(从第 0 年以来)转换为日期
FROM_UNIXTIME(),将 Unix 时间戳转换为日期时间
GET_FORMAT(),返回指定的格式字符串
HOUR(),获取时间中的小时
LAST_DAY,返回日期所属月份的最后一天
MAKEDATE(),返回一个由年和日组成的日期
MAKETIME(),返回一个由时、分、秒组成的时间
MICROSECOND(),返回时间中的毫秒
MINUTE(),返回时间中的分钟
MONTH(),返回日期中的月份
MONTHNAME(),返回日期中的月份名称
PERIOD_ADD(),为一个时间段增加指定的月数
PERIOD_DIFF(),返回两个时间段之间相差的月数
QUARTER(),返回日期所属的季节
SEC_TO_TIME(),将数字形式的秒数转换为时间类型
SECOND(),返回时间中的秒数(0-59)
STR_TO_DATE(),将字符串转换为日期时间类型
SUBTIME(),减去指定时间
SYSDATE(),返回函数执行时的日期时间
TIME(),获取日期时间中的时间部分
TIME_FORMAT(),将时间格式化成字符串
TIME_TO_SEC(),将时间转换为秒数
TIMEDIFF(),计算两个时间点之间相差的时间
TIMESTAMP(),一个参数时返回参数对应的日期时间,两个参数时将一个日期时间增加指定的时间
TIMESTAMPADD(),为一个日期时间增加指定的时间间隔
TIMESTAMPDIFF(),返回两个日期时间之间相差的时间间隔
TO_DAYS(),返回从第 0 年到该日期时间以来的天数
TO_SECONDS(),返回从第 0 年到该日期时间以来的秒数
UNIX_TIMESTAMP(),返回 Unix 时间戳
UTC_DATE()、UTC_DATE,返回当前 UTC 日期
UTC_TIME()、UTC_TIME,返回当前 UTC 时间
UTC_TIMESTAMP()、UTC_TIMESTAMP,返回当前 UTC 日期和时间
WEEK(),返回日期属于一年中的第几周
WEEKDAY(),返回日期属于一周中的第几天(0-6)
WEEKOFYEAR(),返回日期所属的日历周(1-53)
YEAR(),返回日期中的年份
YEARWEEK(),返回日期所属的年分和周数
下面我们通过一些示例来说明这些函数的作用。
16.1 获取当前日期和时间
CURDATE()、CURRENT_DATE() 和 CURRENT_DATE 函数用于返回当前时间,返回格式为日期类型的 ‘YYYY-MM-DD’ 或者整数类型的 YYYYMMDD 。例如:
select curdate(), current_date + 0;
curdate() | current_date + 0 |
---|---|
2020-07-26 | 20200726 |
CURRENT_TIME、CURRENT_TIME([fsp]) 和 CURTIME([fsp]) 函数用于返回当前时间,返回格式为时间类型的 ‘hh:mm:ss’ 或者整数类型的 hhmmss。例如: |
select curtime(), current_time + 0;
curtime() | current_time + 0 |
---|---|
20:59:57 | 205957 |
参数 fsp 用于指定小数秒的精度,取值为 0 到 6。例如: |
select current_time(6);
current_time(6) |
---|
21:00:15.432279 |
NOW([fsp]) 函数用于返回当前日期时间,返回格式为日期时间类型的 ‘YYYY-MM-DD hh:mm:ss’ 或者整数类型的 YYYYMMDDhhmmss;CURRENT_TIMESTAMP([fsp])、CURRENT_TIMESTAMP、LOCALTIME([fsp])、LOCALTIME、LOCALTIMESTAMP([fsp])、LOCALTIMESTAMP 都是 Now() 函数的同义词。例如: |
select now(), current_timestamp(6), localtime, localtimestamp(6);
now() | current_timestamp(6) | localtime | localtimestamp(6) |
---|---|---|---|
2020-07-26 21:01:03 | 2020-07-26 21:01:03.369695 | 2020-07-26 21:01:03 | 2020-07-26 21:01:03.369695 |
SYSDATE([fsp]) 函数用于返回函数执行时的日期时间,返回格式为日期时间类型的 ‘YYYY-MM-DD hh:mm:ss’ 或者整数类型的 YYYYMMDDhhmmss。例如: |
select sysdate(), sysdate(6);
sysdate() | sysdate(6) |
---|---|
2020-07-26 21:08:53 | 2020-07-26 21:08:53.322645 |
需要注意的是,NOW() 函数返回的是语句开始执行的时间,对于存储函数或者触发器返回 |