函数 | 描述 |
---|---|
NOW | 返回当前日期和时间 |
CURDATE | 返回当前日期 |
CURRENT_DATE | 返回当前日期 |
CURRENT_TIME | 返回当前时间 |
CURRENT_TIMESTAMP | 返回当前日期和时间 |
CURTIME | 返回当前时间 |
LOCALTIME | 返回当前日期和时间 |
LOCALTIMESTAMP | 返回当前日期和时间 |
SYSDATE | 返回当前日期和时间 |
FROM_DAYS | 从数字日期值返回日期 |
MAKEDATE | 根据年份和天数值创建并返回日期 |
MAKETIME | 根据小时、分钟和秒值创建并返回时间 |
SEC_TO_TIME | 根据指定的秒数返回一个时间值 |
STR_TO_DATE | 根据字符串和格式返回日期 |
TIMESTAMP | 根据日期或日期时间值返回一个日期时间值 |
函数 | 描述 |
---|---|
DATE_FORMAT | 格式化日期 |
TIME_FORMAT | 按指定格式格式化时间 |
EXTRACT | 从给定日期提取部分 |
DATE | 从日期时间表达式中提取日期部分 |
TIME | 从给定时间/日期时间中提取时间部分 |
YEAR | 返回给定日期的年份部分 |
QUARTER | 返回给定日期值的一年中的季度 |
MONTH | 返回给定日期的月份部分 |
MONTHNAME | 返回给定日期的月份名称 |
DAYOFMONTH / DAY | 返回给定日期的月份日期 |
HOUR | 返回给定日期的小时部分 |
MINUTE | 返回时间/日期时间的分钟部分 |
SECOND | 返回时间/日期时间的秒部分 |
MICROSECOND | 返回时间/日期时间的微秒部分 |
TIME_TO_SEC | 将时间值转换为秒 |
DAYOFYEAR | 返回给定日期的一年中的哪一天 |
DAYOFWEEK | 返回给定日期的星期索引 |
WEEKDAY | 返回给定日期的星期编号 |
DAYNAME | 返回给定日期的星期名称 |
WEEK | 返回给定日期的周数 |
WEEKOFYEAR | 返回给定日期的周数 |
YEARWEEK | 返回给定日期的年和周数 |
TO_DAYS | 返回日期和日期"0000-00-00"之间的天数 |
函数 | 描述 |
---|---|
ADDDATE | 将时间/日期间隔添加到日期,然后返回日期 |
ADDTIME | 将时间间隔添加到时间/日期时间,然后返回时间/日期时间 |
DATEDIFF | 返回两个日期值之间的天数 |
DATE_ADD | 将时间/日期间隔添加到日期,然后返回日期 |
DATE_SUB | 从日期中减去时间/日期间隔,然后返回日期 |
PERIOD_ADD | 将指定的月数添加到期间 |
PERIOD_DIFF | 返回两个句点之间的差 |
SUBDATE | 从日期中减去时间/日期间隔,然后返回日期 |
SUBTIME | 从日期时间中减去一个时间间隔,然后返回时间/日期时间 |
TIMEDIFF | 返回两个时间/日期时间表达式之间的差异 |
LAST_DAY | 提取给定日期当月的最后一天 |
将时间/日期间隔添加到日期,然后返回日期
语法
ADDDATE(date, INTERVAL value addunit)
示例
mysql> SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
+----------------------------------------+
| ADDDATE("2017-06-15", INTERVAL 10 DAY) |
+----------------------------------------+
| 2017-06-25 |
+----------------------------------------+
将时间/日期间隔添加到日期,然后返回日期
语法
DATE_ADD(date, INTERVAL value addunit)
SELECT DATE_ADD("2017-06-15", INTERVAL 2 DAY);
+----------------------------------------+
| DATE_ADD("2017-06-15", INTERVAL 2 DAY) |
+----------------------------------------+
| 2017-06-17 |
+----------------------------------------+
从日期中减去时间/日期间隔,然后返回日期
语法
DATE_SUB(date, INTERVAL value interval)
示例
SELECT DATE_SUB("2017-06-15", INTERVAL 2 DAY);
+----------------------------------------+
| DATE_SUB("2017-06-15", INTERVAL 2 DAY) |
+----------------------------------------+
| 2017-06-13 |
+----------------------------------------+
返回两个日期值之间的天数
语法
DATEDIFF(date1, date2)
示例
SELECT DATEDIFF("2017-01-10", "2017-01-01");
+--------------------------------------+
| DATEDIFF("2017-01-10", "2017-01-01") |
+--------------------------------------+
| 9 |
+--------------------------------------+
返回给定日期的月份部分(从 1 到 12 的数字)
语法
MONTH(date)
示例
mysql> SELECT MONTH("2017-06-15");
+---------------------+
| MONTH("2017-06-15") |
+---------------------+
| 6 |
+---------------------+
返回给定日期的月份名称
语法
MONTHNAME(date)
示例
mysql> SELECT MONTHNAME("2017-06-15");
+-------------------------+
| MONTHNAME("2017-06-15") |
+-------------------------+
| June |
+-------------------------+
示例
-- 返回当前日期
mysql> SELECT CURDATE();
+------------+
| CURDATE() |
+------------+
| 2023-10-24 |
+------------+
-- 返回当前日期
mysql> SELECT CURRENT_DATE();
+----------------+
| CURRENT_DATE() |
+----------------+
| 2023-10-24 |
+----------------+
-- 返回当前时间
mysql> SELECT CURRENT_TIME();
+----------------+
| CURRENT_TIME() |
+----------------+
| 11:39:45 |
+----------------+
-- 返回当前时间
mysql> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 11:40:44 |
+-----------+
-- 返回当前日期和时间
mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2023-10-24 11:40:12 |
+---------------------+
-- 返回当前日期和时间
mysql> SELECT LOCALTIME();
+---------------------+
| LOCALTIME() |
+---------------------+
| 2023-10-24 14:09:55 |
+---------------------+
-- 返回当前日期和时间
mysql> SELECT LOCALTIMESTAMP();
+---------------------+
| LOCALTIMESTAMP() |
+---------------------+
| 2023-10-24 14:10:22 |
+---------------------+
-- 返回当前日期和时间
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2023-10-24 14:12:47 |
+---------------------+
-- 返回当前日期和时间
mysql> SELECT SYSDATE();
+---------------------+
| SYSDATE() |
+---------------------+
| 2023-10-24 14:17:24 |
+---------------------+
-- 提取日期部分
mysql> SELECT DATE("2017-06-15 09:34:21");
+-----------------------------+
| DATE("2017-06-15 09:34:21") |
+-----------------------------+
| 2017-06-15 |
+-----------------------------+
-- 从时间表达式中提取时间部分
mysql> SELECT TIME("2017-08-15 19:30:10");
+-----------------------------+
| TIME("2017-08-15 19:30:10") |
+-----------------------------+
| 19:30:10 |
+-----------------------------+
-- 返回给定日期的年份部分(从 1000 到 9999 的数字)
mysql> SELECT YEAR("2017-06-15");
+--------------------+
| YEAR("2017-06-15") |
+--------------------+
| 2017 |
+--------------------+
-- 返回给定日期的小时部分
mysql> SELECT HOUR("2017-06-20 09:34:00");
+-----------------------------+
| HOUR("2017-06-20 09:34:00") |
+-----------------------------+
| 9 |
+-----------------------------+
-- 从给定日期提取部分
SELECT EXTRACT(MONTH FROM "2017-06-15");
+----------------------------------+
| EXTRACT(MONTH FROM "2017-06-15") |
+----------------------------------+
| 6 |
+----------------------------------+
-- 返回给定日期的月份日期,等于 DAY() 函数
mysql> SELECT DAYOFMONTH("2017-06-15");
+--------------------------+
| DAYOFMONTH("2017-06-15") |
+--------------------------+
| 15 |
+--------------------------+
-- 返回某个日期的工作日索引
-- 1=星期日,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五,7=星期六
mysql> SELECT DAYOFWEEK("2017-06-15");
+-------------------------+
| DAYOFWEEK("2017-06-15") |
+-------------------------+
| 5 |
+-------------------------+
-- 返回日期的工作日编号
-- 0 = 星期一,1 = 星期二,2 = 星期三,3 = 星期四,4 = 星期五,5 = 星期六,6 = 星期日
mysql> SELECT WEEKDAY("2017-06-15");
+-----------------------+
| WEEKDAY("2017-06-15") |
+-----------------------+
| 3 |
+-----------------------+
-- 返回给定日期的星期名称
mysql> SELECT DAYNAME("2017-06-15");
+-----------------------+
| DAYNAME("2017-06-15") |
+-----------------------+
| Thursday |
+-----------------------+
-- 返回给定日期的一年中的哪一天(从 1 到 366 的数字)
mysql> SELECT DAYOFYEAR("2017-06-15");
+-------------------------+
| DAYOFYEAR("2017-06-15") |
+-------------------------+
| 166 |
+-------------------------+
-- 返回时间/日期时间的微秒部分(从 0 到 999999)
mysql> SELECT MICROSECOND("2017-06-20 09:34:00.000023");
+-------------------------------------------+
| MICROSECOND("2017-06-20 09:34:00.000023") |
+-------------------------------------------+
| 23 |
+-------------------------------------------+
-- 返回时间/日期时间的分钟部分(从 0 到 59)
mysql> SELECT MINUTE("2017-06-20 09:34:00");
+-------------------------------+
| MINUTE("2017-06-20 09:34:00") |
+-------------------------------+
| 34 |
+-------------------------------+
-- 提取给定日期该月的最后一天
mysql> SELECT LAST_DAY("2017-06-20");
+------------------------+
| LAST_DAY("2017-06-20") |
+------------------------+
| 2017-06-30 |
+------------------------+
-- 返回给定日期值(从 1 到 4 的数字)的一年中的季度
mysql> SELECT QUARTER("2017-06-15");
+-----------------------+
| QUARTER("2017-06-15") |
+-----------------------+
| 2 |
+-----------------------+
-- 返回时间/日期时间的秒部分(从 0 到 59)
mysql> SELECT SECOND("23:59:59");
+--------------------+
| SECOND("23:59:59") |
+--------------------+
| 59 |
+--------------------+
按指定格式化日期
语法
DATE_FORMAT(date, format)
格式 | 描述 |
---|---|
%a | 工作日的缩写名称(周日至周六) |
%b | 缩写月份名称(1 月至 12 月) |
%c | 数字月份名称(0 到 12) |
%D | 以数字形式表示的月份中的日期,后跟后缀 (1st, 2nd, 3rd, …) |
%d | 以数值表示的月份中的日期(01 到 31) |
%e | 以数字形式表示的月份中的日期(0 到 31) |
%f | 微秒(000000 到 999999) |
%H | 小时(00 到 23) |
%h | 小时(00 到 12) |
%I | 小时(00 到 12) |
%i | 分钟(00 到 59) |
%j | 一年中的某一天(001 到 366) |
%k | 小时(0 到 23) |
%l | 小时(1 到 12) |
%M | 完整的月份名称(1 月至 12 月) |
%m | 数字形式的月份名称(00 到 12) |
%p | 上午或下午 |
%r | 12 小时 AM 或 PM 格式的时间 (hh:mm:ss AM/PM) |
%S | 秒(00 到 59) |
%s | 秒(00 到 59) |
%T | 24 小时制时间 (hh:mm:ss) |
%U | 星期天是一周的第一天(00 到 53) |
%u | 星期一是一周的第一天的星期(00 到 53) |
%V | 星期天是一周的第一天(01 到 53)。与 %X 一起使用 |
%v | 星期一是一周的第一天的星期(01 到 53)。与 %X 一起使用 |
%W | 完整的工作日名称(周日至周六) |
%w | 星期天=0,星期六=6 |
%X | 星期天是一周的第一天的星期。与 %V 一起使用 |
%x | 星期一是一周的第一天的一周的年份。与 %V 一起使用 |
%Y | 4 位数字形式的年份 |
%y | 2 位数字形式的年份 |
示例
mysql> SELECT DATE_FORMAT("2017-06-01 09:01:02", "%Y-%m-%d %H:%i:%s");
+---------------------------------------------------------+
| DATE_FORMAT("2017-06-01 09:01:02", "%Y-%m-%d %H:%i:%s") |
+---------------------------------------------------------+
| 2017-06-01 09:01:02 |
+---------------------------------------------------------+