VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

DATE_SUB

功能描述

在MySQL兼容模式下,Vastbase G100支持使用date_sub()函数得到某日期减去指定的时间间隔后的日期。

语法格式

date_sub(date,INTERVAL expr type)

参数说明

  • date

    日期信息,必须是合法的日期表达式。

  • expr

    要减去的时间间隔。

  • type

    时间类型/日期格式,其可选范围如下表:

参数取值 含义
MICROSECOND 毫秒
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER 季度
YEAR
SECOND_MICROSECOND 秒_毫秒
MINUTE_MICROSECOND 分_毫秒
MINUTE_SECOND 分_秒
HOUR_MICROSECOND 时_毫秒
HOUR_SECOND 时_秒
HOUR_MINUTE 时_分
DAY_MICROSECOND 天_毫秒
DAY_SECOND 天_秒
DAY_MINUTE 天_分
DAY_HOUR 天_时
YEAR_MONTH 年_月

注意事项

  • 该功能仅在数据库兼容模式为MySQL时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。
  • 仅Vastbase G100 2.2 Build 11及以后版本支持此功能。
  • date的取值必须是合法的日期表达式,其合法性的校验是按照当前Vastbase G100中的合法性校验进行处理。

示例

1、创建并切换至兼容模式为MySQL的数据库下。

create database test_1100752 dbcompatibility 'B';
\c test_1100752;

2、date与type的各种不同取值情况下,查询使用date_sub函数得到的结果。

  • date参数类型为date,type类型为WEEK。


select DATE_SUB('2022-5-31',INTERVAL 2 WEEK) result;

返回结果为:

         result
------------------------
 2022-05-17 00:00:00+08
(1 row)
  • date参数为now(),type类型为day。


select DATE_SUB(now(),INTERVAL 123 day) result;

返回结果为:

            result
-------------------------------
 2022-07-17 11:46:24.714729+08
(1 row)
  • date参数为强转timestamp类型,type类型为day。


select DATE_SUB('2012-02-13'::timestamp,INTERVAL 123 day) result;

返回结果为:

       result
---------------------
 2011-10-13 00:00:00
(1 row)
  • date参数为timestamptz类型,type类型为YEAR_MONTH。


select DATE_SUB(timestamptz '2022-5-31',INTERVAL '5 31' YEAR_MONTH)result;

返回结果为:

         result
------------------------
 2014-10-31 00:00:00+08
(1 row)
  • date参数为datetime字符串,type类型为SECOND。


select DATE_SUB('20121213121232',INTERVAL 123 SECOND) result;

返回结果为:

         result
------------------------
 2012-12-13 12:10:29+08
(1 row)