RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
创新互联OceanBase教程:OceanBase日期时间函数

日期时间函数主要用来显示有关日期和时间的信息。

创新互联主营金昌网站建设的网络公司,主营网站建设方案,成都app软件开发,金昌h5微信小程序搭建,金昌网站营销推广欢迎金昌等地区企业咨询

CURDATE

声明


CURDATE()

说明

返回当前日期,不含时间部分。

例子


obclient> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2018-05-05 |
+------------+
1 row in set (0.00 sec)

CURRENT_DATE

声明


CURRENT_DATE()
CURRENT_DATE

说明

同 CURDATE()。

CURRENT_TIME

声明


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

声明


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

声明


CURTIME()

说明

同 CURRENT_TIME()。

DATE_ADD

声明


DATE_ADD(date, INTERVAL expr unit)

说明

日期时间的算术计算。

  • date 表示日期时间基准,日期部分必选,时间部分可选。

  • expr 表示时间间隔,可以为负值。

  • unit 表示时间间隔单位。

以下为所有时间间隔单位列表:

单位

类型

含义

格式

MICROSECOND

独立

微秒

MICROSECONDS

SECOND

独立

秒

SECONDS

MINUTE

独立

分钟

MINUTES

HOUR

独立

小时

HOURS

DAY

独立

天

DAYS

WEEK

独立

周

WEEKS

MONTH

独立

月

MONTHS

QUARTER

独立

季度

QUARTERS

YEAR

独立

年

YEARS

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_SECOND

组合

天到秒

'DAYS HOURS:MINUTES:SECONDS'

DAY_MINUTE

组合

天到分钟

'DDAYSD HOURS:MINUTES'

DAY_HOUR

组合

天到小时

'DAYS HOURS'

YEAR_MONTH

组合

年到月

'YEARS-MONTHS'

例子


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)

说明

将日期时间以指定格式输出。

  • date 表示日期时间。

  • format 表示输出格式。

以下为所有输出格式列表:

格式符

含义

格式

%a

星期的英文缩写。

Sun..Sat

%b

月份的英文缩写。

Jan..Dec

%c

月份的数字形式。

1..12

%D

日的英文缩写。

1st..31st

%d

日的数字形式。

01..31

%e

日的数字形式。

1.. 31

%f

微秒。

000000..999999

%H

小时。

00..23

%h

小时。

01..12

%I

小时。

01..12

%i

分钟。

00..59

%j

一年中的第几天。

001..366

%k

小时。

0..23

%l

小时。

0..12

%M

月份的英文名称。

January..December

%m

月份的数字形式。

01..12

%p

上午或下午。

AM/PM

%r

12小时制时间。

hh:mm:ss AM/PM

%S

秒。

00..59

%s

秒。

00..59

%T

24小时制时间。

hh:mm:ss

%U

一年中的第几周,周日为每周第一天。

00..53

%u

一年中的第几周,周一为每周第一天。

00..53

%V

一年中的第几周,周日为每周第一天(和 %X 同时使用)。

01..53

%v

一年中的第几周,周一为每周第一天(和 %x 同时使用)。

01..53

%W

星期的英文名称。

Sunday..Saturday

%w

一周中的第几天。

0=Sunday..6=Saturday

%X

一周所属的年份,周日为每周第一天(和 %V 同时使用)。

%x

一周所属的年份,周一为每周第一天(和 %v 同时使用)。

%Y

四位年份。

%y

两位年份。

%%

文字字符,输出一个 %。

例子


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_SUB(date, INTERVAL expr unit)

说明

日期时间的算术计算。

请参考 DATE_ADD()。

DATEDIFF

声明


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

声明


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

声明


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

声明


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

声明


MONTH(date)

说明

返回 date 的月份信息。

例子


obclient> SELECT MONTH('2008-02-03');
+---------------------+
| MONTH('2008-02-03') |
+---------------------+
|                   2 |
+---------------------+
1 row in set (0.01 sec)

NOW

声明


NOW([scale])

说明

同 CURRENT_TIMESTAMP()。

PERIOD_DIFF

声明


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_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

声明


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

声明


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

声明


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

声明


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

声明


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

声明


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_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()
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_TIMESTAMP()

说明

返回当前 UTC 时间。

例子


obclient> SELECT UTC_TIMESTAMP();
+---------------------+
| UTC_TIMESTAMP()     |
+---------------------+
| 2018-05-06 01:38:32 |
+---------------------+
1 row in set (0.01 sec)

YEAR

声明


YEAR(date)

说明

返回 date 值的年份信息。

例子


obclient> SELECT YEAR('1987-01-01');
+--------------------+
| YEAR('1987-01-01') |
+--------------------+
|               1987 |
+--------------------+
1 row in set (0.00 sec)


网站名称:创新互联OceanBase教程:OceanBase日期时间函数
当前路径:http://aqpgk.com/article/coesesh.html