mysql-常用时间日期函数 |
函数 | 释义 | 使用案例 | 结果 |
CURDATE() CURRENT_DATE() | 将当前日期按照"YYYY-MM-DD"或者"YYYYMMDD"格式的值返回,具体格式根据函数用在字符串或是数字语境中而定 | SELECT CURDATE(), CURRENT_DATE() FROM DUAL; | 2021-11-22 2021-11-22 |
CURRENT_TIMESTAMP() LOCALTIME() NOW() SYSDATE() | 这四个函数作用相同,返回当前日期和时间值,格式为"YYYY_MM-DD HH:MM:SS"或"YYYYMMDDHHMMSS",具体格式根据函数用在字符串或数字语境中而定 | select CURRENT_TIMESTAMP(), LOCALTIME(), NOW(), SYSDATE() from DUAL; | 2021-11-22 21:05:17 2021-11-22 21:05:17 2021-11-22 21:05:17 2021-11-22 21:05:17 |
UNIX_TIMESTAMP() UNIX_TIMESTAMP(date) | 前者返回一个格林尼治标准时间1970-01-01 00:00:00到现在的秒数,后者返回一个格林尼治标准时间1970-01-01 00:00:00到指定时间的秒数 | select UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()-1) from DUAL; | 1637587448 1637587447 |
FROM_UNIXTIME(date) | 和UNIX_TIMESTAMP互为反函数,把UNIX时间戳转换为普通格式的时间 | select FROM_UNIXTIME(1637581619) from DUAL; | 2021-11-22 19:46:59 |
UTC_DATE() UTC_TIME() | 前者返回当前UTC(世界标准时间)日期值,其格式为"YYYY-MM-DD"或"YYYYMMDD"; 后者返回当前UTC时间值,其格式为"HH-MM-SS"或"HHMMSS"。具体使用哪种取决于函数用在字符串还是数字语境中 | select UTC_DATE(), UTC_TIME() from DUAL; | 2021-11-22 13:28:48 |
MONTH(date) MONTHNAME(date) | 前者返回指定日期中的月份,后者返回指定日期中的月份的名称 | select MONTH(now()), MONTHNAME(now()) from DUAL; | 11 November |
DAYNAME(d) DAYOFWEEK(d) WEEKDAY(d) | DAYNAME(d)返回d对应的工作日的英文名称,如Sunday、Monday等;DAYOFWEEK(d)返回的对应一周中的索引,1表示周日、2表示周一;WEEKDAY(d)表示d对应的工作日索引,0表示周一,1表示周二 | select DAYNAME(NOW()), DAYOFWEEK(NOW()), WEEKDAY(NOW()) from DUAL; | Monday 2 0 |
WEEK(d) WEEKOFYEAD(d) | 前者计算日期d是一年中的第几周,后者计算某一天位于一年中的第几周 | select WEEK(NOW()), WEEKOFYEAR(NOW()) from DUAL; | 47 47 |
DAYOFYEAR(d) DAYOFMONTH(d) | 前者返回d是一年中的第几天,后者返回d是一月中的第几天 | SELECT DAYOFYEAR(NOW()), DAYOFMONTH(NOW()) FROM DUAL; | 326 22 |
YEAR(date) QUARTER(date) MINUTE(time) SECOND(time) | YEAR(date)返回指定日期对应的年份,范围是1970~2069;QUARTER(date)返回date对应一年中的季度,范围是1~4;MINUTE(time)返回time对应的分钟数,范围是0~59;SECOND(time)返回制定时间的秒值 | SELECT YEAR(NOW()), QUARTER(NOW()), MINUTE(NOW()), SECOND(NOW()) FROM DUAL; | 2021 4 43 7 |
EXTRACE(type FROM date) | 从日期中提取一部分,type可以是YEAR、YEAR_MONTH、DAY_HOUR、DAY_MICROSECOND、DAY_MINUTE、DAY_SECOND | SELECT EXTRACT(YEAR FROM NOW()) FROM DUAL; | 2021 |
TIME_TO_SEC(time) | 返回以转换为秒的time参数,转换公式为"3600*小时 + 60*分钟 + 秒" | SELECT TIME_TO_SEC(NOW()) FROM DUAL; | 78382 |
SEC_TO_TIME() | 和TIME_TO_SEC(time)互为反函数,将秒值转换为时间格式 | SELECT SEC_TO_TIME(73922) FROM DUAL; | 20:32:02 |
DATE_ADD(date,INTERVAL expr type) ADDDATE(date,INTERVAL expr type) | 返回将起始时间加上expr type之后的时间,比如DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND)表示的就是把第一个时间加1秒 | SELECT DATE_ADD(NOW(),INTERVAL 1 SECOND), ADDDATE(NOW(),INTERVAL 1 SECOND) FROM DUAL; | 2021-11-22 21:49:50 2022-11-22 21:49:49 |
DATE_SUB(date,INTERVAL expr type) SUBDATE(date,INTERVAL expr type) | 回将起始时间减去expr type之后的时间 | SELECT DATE_SUB(NOW(),INTERVAL 1 DAY), SUBDATE(NOW(),INTERVAL 1 YEAR); | 2021-11-21 21:51:44br> 2020-11-22 21:51:44 |
ADDTIME(date,expr) SUBTIME(date,expr) | 前者进行date的时间加操作,后者进行date的时间减操作,expr 是一个时间表达式 | SELECT ADDTIME(NOW(), '1:1:1'), SUBTIME(NOW(), '5:10:37') FROM DUAL; | 2021-11-22 22:57:19 2021-11-22 16:45:41 |