创新互联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://www.hantingmc.com/qtweb/news10/513060.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联