十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
日期时间函数主要用来显示有关日期和时间的信息。

创新互联主营金昌网站建设的网络公司,主营网站建设方案,成都app软件开发,金昌h5微信小程序搭建,金昌网站营销推广欢迎金昌等地区企业咨询
声明
  
CURDATE()说明
返回当前日期,不含时间部分。
例子
  
obclient> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2018-05-05 |
+------------+
1 row in set (0.00 sec)声明
  
CURRENT_DATE()
CURRENT_DATE说明
同 CURDATE()。
声明
  
CURRENT_TIME([scale])说明
返回当前时间,不含日期部分。
scale 有效值为 0 到 6,表示微秒部分精度,默认值为 0。
例子
  
obclient> SELECT CURRENT_TIME(6);
+-----------------+
| CURRENT_TIME(6) |
+-----------------+
| 11:11:45.215311 |
+-----------------+
1 row in set (0.01 sec)声明
  
CURRENT_TIMESTAMP([scale])说明
返回当前日期时间,考虑时区设置。
scale 有效值为 0 到 6,表示微秒部分精度,默认值为 0。
例子
  
obclient> SELECT CURRENT_TIMESTAMP(6);
+----------------------------+
| CURRENT_TIMESTAMP(6)       |
+----------------------------+
| 2018-05-05 11:35:39.177764 |
+----------------------------+
1 row in set (0.01 sec)声明
  
CURTIME()说明
同 CURRENT_TIME()。
声明
  
DATE_ADD(date, INTERVAL expr unit)说明
日期时间的算术计算。
date 表示日期时间基准,日期部分必选,时间部分可选。
expr 表示时间间隔,可以为负值。
unit 表示时间间隔单位。
以下为所有时间间隔单位列表:
| 单位 | 类型 | 含义 | 格式 | 
|---|---|---|---|
| 
 | 独立 | 微秒 | 
 | 
| 
 | 独立 | 秒 | 
 | 
| 
 | 独立 | 分钟 | 
 | 
| 
 | 独立 | 小时 | 
 | 
| 
 | 独立 | 天 | 
 | 
| 
 | 独立 | 周 | 
 | 
| 
 | 独立 | 月 | 
 | 
| 
 | 独立 | 季度 | 
 | 
| 
 | 独立 | 年 | 
 | 
| 
 | 组合 | 秒到微秒 | 
 | 
| 
 | 组合 | 分钟到微秒 | 
 | 
| 
 | 组合 | 分钟到秒 | 
 | 
| 
 | 组合 | 小时到微秒 | 
 | 
| 
 | 组合 | 小时到秒 | 
 | 
| 
 | 组合 | 小时到分钟 | 
 | 
| 
 | 组合 | 天到秒 | 
 | 
| 
 | 组合 | 天到分钟 | 
 | 
| 
 | 组合 | 天到小时 | 
 | 
| 
 | 组合 | 年到月 | 
 | 
例子
  
obclient> SELECT
     DATE_ADD(NOW(), INTERVAL 5 DAY),
     DATE_ADD('2014-01-10', INTERVAL 5 MICROSECOND),
     DATE_ADD('2014-01-10', INTERVAL 5 SECOND),
     DATE_ADD('2014-01-10', INTERVAL 5 MINUTE),
     DATE_ADD('2014-01-10', INTERVAL 5 HOUR),
     DATE_ADD('2014-01-10', INTERVAL 5 DAY),
     DATE_ADD('2014-01-10', INTERVAL 5 WEEK),
     DATE_ADD('2014-01-10', INTERVAL 5 MONTH),
     DATE_ADD('2014-01-10', INTERVAL 5 QUARTER),
     DATE_ADD('2014-01-10', INTERVAL 5 YEAR),
     DATE_ADD('2014-01-10', INTERVAL '5.000005' SECOND_MICROSECOND),
     DATE_ADD('2014-01-10', INTERVAL '05:05.000005' MINUTE_MICROSECOND),
     DATE_ADD('2014-01-10', INTERVAL '05:05' MINUTE_SECOND),
     DATE_ADD('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND),
     DATE_ADD('2014-01-10', INTERVAL '05:05:05' HOUR_SECOND),
     DATE_ADD('2014-01-10', INTERVAL '05:05' HOUR_MINUTE),
     DATE_ADD('2014-01-10', INTERVAL '01 05:05:05.000005' DAY_MICROSECOND),
     DATE_ADD('2014-01-10', INTERVAL '01 05:05:05' DAY_SECOND),
     DATE_ADD('2014-01-10', INTERVAL '01 05:05' DAY_MINUTE),
     DATE_ADD('2014-01-10', INTERVAL '01 05' DAY_HOUR),
     DATE_ADD('2014-01-10', INTERVAL '1-01' YEAR_MONTH)
     \G
*************************** 1. row ***************************
                                      DATE_ADD(NOW(), INTERVAL 5 DAY): 2021-04-21 16:04:53
                       DATE_ADD('2014-01-10', INTERVAL 5 MICROSECOND): 2014-01-10 00:00:00.000005
                            DATE_ADD('2014-01-10', INTERVAL 5 SECOND): 2014-01-10 00:00:05
                            DATE_ADD('2014-01-10', INTERVAL 5 MINUTE): 2014-01-10 00:05:00
                              DATE_ADD('2014-01-10', INTERVAL 5 HOUR): 2014-01-10 05:00:00
                               DATE_ADD('2014-01-10', INTERVAL 5 DAY): 2014-01-15
                              DATE_ADD('2014-01-10', INTERVAL 5 WEEK): 2014-02-14
                             DATE_ADD('2014-01-10', INTERVAL 5 MONTH): 2014-06-10
                           DATE_ADD('2014-01-10', INTERVAL 5 QUARTER): 2015-04-10
                              DATE_ADD('2014-01-10', INTERVAL 5 YEAR): 2019-01-10
       DATE_ADD('2014-01-10', INTERVAL '5.000005' SECOND_MICROSECOND): 2014-01-10 00:00:05.000005
   DATE_ADD('2014-01-10', INTERVAL '05:05.000005' MINUTE_MICROSECOND): 2014-01-10 00:05:05.000005
               DATE_ADD('2014-01-10', INTERVAL '05:05' MINUTE_SECOND): 2014-01-10 00:05:05
  DATE_ADD('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND): 2014-01-10 05:05:05.000005
              DATE_ADD('2014-01-10', INTERVAL '05:05:05' HOUR_SECOND): 2014-01-10 05:05:05
                 DATE_ADD('2014-01-10', INTERVAL '05:05' HOUR_MINUTE): 2014-01-10 05:05:00
DATE_ADD('2014-01-10', INTERVAL '01 05:05:05.000005' DAY_MICROSECOND): 2014-01-11 05:05:05.000005
            DATE_ADD('2014-01-10', INTERVAL '01 05:05:05' DAY_SECOND): 2014-01-11 05:05:05
               DATE_ADD('2014-01-10', INTERVAL '01 05:05' DAY_MINUTE): 2014-01-11 05:05:00
                    DATE_ADD('2014-01-10', INTERVAL '01 05' DAY_HOUR): 2014-01-11 05:00:00
                   DATE_ADD('2014-01-10', INTERVAL '1-01' YEAR_MONTH): 2015-02-10
1 row in set (0.01 sec)声明
  
DATE_FORMAT(date, format)说明
将日期时间以指定格式输出。
date 表示日期时间。
format 表示输出格式。
以下为所有输出格式列表:
| 格式符 | 含义 | 格式 | 
|---|---|---|
| 
 | 星期的英文缩写。 | 
 | 
| 
 | 月份的英文缩写。 | 
 | 
| 
 | 月份的数字形式。 | 
 | 
| 
 | 日的英文缩写。 | 
 | 
| 
 | 日的数字形式。 | 
 | 
| 
 | 日的数字形式。 | 
 | 
| 
 | 微秒。 | 
 | 
| 
 | 小时。 | 
 | 
| 
 | 小时。 | 
 | 
| 
 | 小时。 | 
 | 
| 
 | 分钟。 | 
 | 
| 
 | 一年中的第几天。 | 
 | 
| 
 | 小时。 | 
 | 
| 
 | 小时。 | 
 | 
| 
 | 月份的英文名称。 | 
 | 
| 
 | 月份的数字形式。 | 
 | 
| 
 | 上午或下午。 | 
 | 
| 
 | 12小时制时间。 | 
 | 
| 
 | 秒。 | 
 | 
| 
 | 秒。 | 
 | 
| 
 | 24小时制时间。 | 
 | 
| 
 | 一年中的第几周,周日为每周第一天。 | 
 | 
| 
 | 一年中的第几周,周一为每周第一天。 | 
 | 
| 
 | 一年中的第几周,周日为每周第一天(和  | 
 | 
| 
 | 一年中的第几周,周一为每周第一天(和  | 
 | 
| 
 | 星期的英文名称。 | 
 | 
| 
 | 一周中的第几天。 | 
 | 
| 
 | 一周所属的年份,周日为每周第一天(和  | |
| 
 | 一周所属的年份,周一为每周第一天(和  | |
| 
 | 四位年份。 | |
| 
 | 两位年份。 | |
| 
 | 文字字符,输出一个  | 
例子
  
obclient> SELECT
          DATE_FORMAT('2014-01-01', '%Y-%M-%d'),
          DATE_FORMAT('2014-01-01', '%X-%V'),
          DATE_FORMAT('2014-01-01', '%U')
          \G
*************************** 1. row ***************************
DATE_FORMAT('2014-01-01', '%Y-%M-%d'): 2014-January-01
   DATE_FORMAT('2014-01-01', '%X-%V'): 2013-52
      DATE_FORMAT('2014-01-01', '%U'): 00
1 row in set (0.01 sec)声明
  
DATE_SUB(date, INTERVAL expr unit)说明
日期时间的算术计算。
请参考 DATE_ADD()。
声明
  
DATEDIFF(date1, date2)说明
返回 date1 和 date2 之间的天数。
计算中只用到参数的日期部分,忽略时间部分。
例子
  
obclient> SELECT DATEDIFF('2015-06-19','1994-12-17');
+-------------------------------------+
| DATEDIFF('2015-06-19','1994-12-17') |
+-------------------------------------+
|                                7489 |
+-------------------------------------+
1 row in set (0.01 sec)声明
  
EXTRACT(unit FROM date)说明
以整数类型返回 date 的指定部分值。如果指定多个部分,则将所有值按顺序拼接。
unit 请参考 DATE_ADD()。当 unit 为 WEEK 时,请参考 DATE_FORMAT() 的 %U 说明。
例子
  
obclient> SELECT EXTRACT(WEEK FROM '2013-01-01'),
     EXTRACT(WEEK FROM '2013-01-06'),
     EXTRACT(YEAR_MONTH FROM '2012-03-09'),
     EXTRACT(DAY FROM NOW())\G;
*************************** 1. row ***************************
      EXTRACT(WEEK FROM '2013-01-01'): 0
      EXTRACT(WEEK FROM '2013-01-06'): 1
EXTRACT(YEAR_MONTH FROM '2012-03-09'): 201203
              EXTRACT(DAY FROM NOW()): 16
1 row in set (0.00 sec)声明
  
FROM_DAYS(N)说明
返回指定天数 N 对应的 DATE 值。天数指距离 0000-01-01 的天数。
例子
  
obclient> SELECT FROM_DAYS(736271), FROM_DAYS(700000);
+-------------------+-------------------+
| FROM_DAYS(736271) | FROM_DAYS(700000) |
+-------------------+-------------------+
| 2015-11-04        | 1916-07-15        |
+-------------------+-------------------+
1 row in set (0.00 sec)声明
  
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp, format)说明
不指定 format 参数时,返回 DATETIME 类型值,不考虑时区。
指定 format 参数时,返回指定格式的日期时间字符串。
unix_timestamp 指 UNIX 时间戳,即距离 1970-01-01 00:00:00.000000 的微秒数。
format 支持的格式已在 DATE_FORMAT()说明 中列出。
例子
  
obclient> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');
+---------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x') |
+---------------------------------------------------------+
| 2018 5th May 08:41:26 2018                              |
+---------------------------------------------------------+
1 row in set (0.01 sec)声明
  
MONTH(date)说明
返回 date 的月份信息。
例子
  
obclient> SELECT MONTH('2008-02-03');
+---------------------+
| MONTH('2008-02-03') |
+---------------------+
|                   2 |
+---------------------+
1 row in set (0.01 sec)声明
  
NOW([scale])说明
同 CURRENT_TIMESTAMP()。
声明
  
PERIOD_DIFF(p1, p2)说明
以月份位单位返回两个日期之间的间隔。日期只能包含年月信息,格式只能为 YYYYMM 或 YYMM。
例子
  
obclient> SELECT PERIOD_DIFF(200802, 200703);
+----------------------------+
| PERIOD_DIFF(200802,200703) |
+----------------------------+
|                         11 |
+----------------------------+
1 row in set (0.01 sec)声明
  
STR_TO_DATE(str, format)说明
使用 format 将 str 转换为 DATETIME 值、DATE 值、或 TIME 值。返回值类型取决于 format 包含日期时间的哪些部分。
format 支持的格式已在 DATE_FORMAT()说明 中列出。
例子
  
obclient> SELECT STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r');
+-----------------------------------------------------+
| STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') |
+-----------------------------------------------------+
| 2014-01-01 05:05:05                                 |
+-----------------------------------------------------+
1 row in set (0.01 sec)声明
  
TIME(datetime)说明
以 TIME 类型返回 datetime 的时间信息。
例子
  
obclient> SELECT TIME('2003-12-31 01:02:03');
+-----------------------------+
| TIME('2003-12-31 01:02:03') |
+-----------------------------+
| 01:02:03.000000             |
+-----------------------------+
1 row in set (0.01 sec)声明
  
TIME_TO_USEC(date)说明
将 date 值转换为距离 1970-01-01 00:00:00.000000 的微秒数,考虑时区信息。
date 可以表示日期,也可以表示日期时间。
例子
  
obclient> SELECT TIME_TO_USEC('2014-03-25'), TIME_TO_USEC(NOW());
+----------------------------+---------------------+
| TIME_TO_USEC('2014-03-25') | TIME_TO_USEC(NOW()) |
+----------------------------+---------------------+
|           1395676800000000 |    1525528100000000 |
+----------------------------+---------------------+
1 row in set (0.01 sec)声明
  
TIMEDIFF(date1, date2)说明
以 TIME 类型返回两个日期时间的时间间隔。
例子
  
obclient> SELECT
     TIMEDIFF('2015-06-06 12:12:12', '2014-06-05 11:11:11'),
     TIMEDIFF('2015-06-06 12:12:12', '2015-06-05 11:11:11')
     \G
*************************** 1. row ***************************
TIMEDIFF('2015-06-06 12:12:12', '2014-06-05 11:11:11'): 838:59:59
TIMEDIFF('2015-06-06 12:12:12', '2015-06-05 11:11:11'): 25:01:01
1 row in set (0.00 sec)声明
  
TIMESTAMPDIFF(unit, date1, date2)说明
以 unit 为单位返回两个日期时间的间隔。unit 只能为 DATE_ADD() 中的独立单位。
例子
  
obclient> SELECT
     TIMESTAMPDIFF(SECOND, NOW(), '2011-01-01 11:11:11'),
     TIMESTAMPDIFF(DAY, '2011-01-01 11:11:11', NOW())
     \G
*************************** 1. row ***************************
TIMESTAMPDIFF(SECOND, NOW(), '2011-01-01 11:11:11'): -231677498
   TIMESTAMPDIFF(DAY, '2011-01-01 11:11:11', NOW()): 2681
1 row in set (0.00 sec)声明
  
TIMESTAMPADD(unit, interval_expr, date)说明
日期时间的算术计算。
同 DATE_ADD(),但 unit 只能为独立单位。
例子
  
obclient> SELECT
     TIMESTAMPADD(DAY, -5, '2010-01-01 00:00:00'),
     DATE_ADD('2010-01-01 00:00:00', INTERVAL -5 DAY)
     \G
*************************** 1. row ***************************
    TIMESTAMPADD(DAY, -5, '2010-01-01 00:00:00'): 2009-12-27 00:00:00
DATE_ADD('2010-01-01 00:00:00', INTERVAL -5 DAY): 2009-12-27 00:00:00
1 row in set (0.01 sec)声明
  
TO_DAYS(date)说明
返回指定 date 值对应的天数。天数指距离 0000-01-01 的天数。
例子
  
obclient> SELECT TO_DAYS('2015-11-04'), TO_DAYS('20151104');
+-----------------------+---------------------+
| TO_DAYS('2015-11-04') | TO_DAYS('20151104') |
+-----------------------+---------------------+
|                736271 |              736271 |
+-----------------------+---------------------+
1 row in set (0.01 sec)声明
  
USEC_TO_TIME(usec)说明
将 usec 值转换为 TIMESTAMP 类型值。
usec 表示距离 1970-01-01 00:00:00.000000 的微秒数,考虑时区信息。
例子
  
obclient> SELECT USEC_TO_TIME(1);
+----------------------------+
| USEC_TO_TIME(1)            |
+----------------------------+
| 1970-01-01 08:00:00.000001 |
+----------------------------+
1 row in set (0.00 sec)声明
  
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)说明
不指定 date 参数时,返回当前时间距离 '1970-01-01 00:00:00' 的秒数,考虑时区。
指定 date 参数时,返回指定时间距离 '1970-01-01 00:00:00' 的秒数,考虑时区。
例子
  
obclient> SELECT UNIX_TIMESTAMP(), TIME_TO_USEC(NOW());
+------------------+---------------------+
| UNIX_TIMESTAMP() | TIME_TO_USEC(NOW()) |
+------------------+---------------------+
|       1525570561 |    1525570561000000 |
+------------------+---------------------+
1 row in set (0.01 sec)
obclient> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00') |
+---------------------------------------+
|                             875974980 |
+---------------------------------------+
1 row in set (0.01 sec)声明
  
UTC_TIMESTAMP()说明
返回当前 UTC 时间。
例子
  
obclient> SELECT UTC_TIMESTAMP();
+---------------------+
| UTC_TIMESTAMP()     |
+---------------------+
| 2018-05-06 01:38:32 |
+---------------------+
1 row in set (0.01 sec)声明
  
YEAR(date)说明
返回 date 值的年份信息。
例子
  
obclient> SELECT YEAR('1987-01-01');
+--------------------+
| YEAR('1987-01-01') |
+--------------------+
|               1987 |
+--------------------+
1 row in set (0.00 sec)