openGauss 时间/日期函数

时间/日期函数

  • age(timestamp, timestamp)

    描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负,入参可以都带timezone或都不带timezone。

    返回值类型:interval

    示例:

    openGauss=# SELECT age(timestamp '2001-04-10', timestamp '1957-06-13');
               age           
    -------------------------
     43 years 9 mons 27 days
    (1 row)
    
  • age(timestamp)

    描述:当前时间和参数相减,入参可以带或者不带timezone。

    返回值类型:interval

    示例:

    openGauss=# SELECT age(timestamp '1957-06-13');
               age           
    -------------------------
     60 years 2 mons 18 days
    (1 row)
    
  • clock_timestamp()

    描述:实时时钟的当前时间戳。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT clock_timestamp();
            clock_timestamp        
    -------------------------------
     2017-09-01 16:57:36.636205+08
    (1 row)
    
  • current_date

    描述:当前日期。

    返回值类型:date

    示例:

    openGauss=# SELECT current_date;
        date    
    ------------
     2017-09-01
    (1 row)
    
  • current_time

    描述:当前时间。

    返回值类型:time with time zone

    示例:

    openGauss=# SELECT current_time;
           timetz       
    --------------------
     16:58:07.086215+08
    (1 row)
    
  • current_timestamp

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT current_timestamp;
           pg_systimestamp        
    ------------------------------
     2017-09-01 16:58:19.22173+08
    (1 row)
    
  • date_part(text, timestamp)

    描述:获取日期/时间值中子域的值,例如年或者小时的值。等效于extract(field from timestamp)。

    timestamp类型:abstime、date、interval、reltime、time with time zone、time without time zone、timestamp with time zone、timestamp without time zone。

    返回值类型:double precision

    示例:

    openGauss=# SELECT date_part('hour', timestamp '2001-02-16 20:38:40');
     date_part 
    -----------
            20
    (1 row)
    
  • date_part(text, interval)

    描述:获取日期/时间值中子域的值。获取月份值时,如果月份值大于12,则取与12的模。等效于extract(field from timestamp)。

    返回值类型:double precision

    示例:

    openGauss=# SELECT date_part('month', interval '2 years 3 months');
     date_part 
    -----------
             3
    (1 row)
    
  • date_trunc(text, timestamp)

    描述:截取到参数text指定的精度。

    返回值类型:interval、timestamp with time zone、timestamp without time zone

    示例:

    openGauss=# SELECT date_trunc('hour', timestamp  '2001-02-16 20:38:40');
         date_trunc      
    ---------------------
     2001-02-16 20:00:00
    (1 row)
    
  • trunc(timestamp)

    描述:默认按天截取。

    示例:

    openGauss=# SELECT trunc(timestamp  '2001-02-16 20:38:40');                                                                                                                                                                   trunc
    ---------------------
    2001-02-16 00:00:00
    (1 row)
    
  • daterange(arg1, arg2)

    描述:获取时间边界信息。arg1和arg2的类型为date。

    返回值类型:daterange

    示例:

    openGauss=# select daterange('2000-05-06','2000-08-08');
            daterange        
    -------------------------
     [2000-05-06,2000-08-08)
    (1 row)
    
  • extract(field from timestamp)

    描述:获取小时的值。

    返回值类型:double precision

    示例:

    openGauss=# SELECT extract(hour from timestamp '2001-02-16 20:38:40');
     date_part 
    -----------
            20
    (1 row)
    
  • extract(field from interval)

    描述:获取月份的值。如果大于12,则取与12的模。

    返回值类型:double precision

    示例:

    openGauss=# SELECT extract(month from interval '2 years 3 months');
     date_part 
    -----------
             3
    (1 row)
    
  • isfinite(date)

    描述:测试是否为有效日期。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT isfinite(date '2001-02-16');
     isfinite 
    ----------
     t
    (1 row)
    
  • isfinite(timestamp)

    描述:测试判断是否为有效时间。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT isfinite(timestamp '2001-02-16 21:28:30');
     isfinite 
    ----------
     t
    (1 row)
    
  • isfinite(interval)

    描述:测试是否为有效区间。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT isfinite(interval '4 hours');
     isfinite 
    ----------
     t
    (1 row)
    
  • justify_days(interval)

    描述:将时间间隔以月(30天为一月)为单位。

    返回值类型:interval

    示例:

    openGauss=# SELECT justify_days(interval '35 days');
     justify_days 
    --------------
     1 mon 5 days
    (1 row)
    
  • justify_hours(interval)

    描述:将时间间隔以天(24小时为一天)为单位。

    返回值类型:interval

    示例:

    openGauss=# SELECT JUSTIFY_HOURS(INTERVAL '27 HOURS');
     justify_hours  
    ----------------
     1 day 03:00:00
    (1 row)
    
  • justify_interval(interval)

    描述:结合justify_days和justify_hours,调整interval。

    返回值类型:interval

    示例:

    openGauss=# SELECT JUSTIFY_INTERVAL(INTERVAL '1 MON -1 HOUR');
     justify_interval 
    ------------------
     29 days 23:00:00
    (1 row)
    
  • localtime

    描述:当前时间。

    返回值类型:time

    示例:

    openGauss=# SELECT localtime AS RESULT;
         result
    ----------------
     16:05:55.664681
    (1 row)
    
  • localtimestamp

    描述:当前日期及时间。

    返回值类型:timestamp

    示例:

    openGauss=# SELECT localtimestamp;
             timestamp          
    ----------------------------
     2017-09-01 17:03:30.781902
    (1 row)
    
  • now()

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT now();
                  now              
    -------------------------------
     2017-09-01 17:03:42.549426+08
    (1 row)
    
  • timenow

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# select timenow();
            timenow
    ------------------------
     2020-06-23 20:36:56+08
    (1 row)
    
  • numtodsinterval(num, interval_unit)

    描述:将数字转换为interval类型。num为numeric类型数字,interval_unit为固定格式字符串('DAY' | 'HOUR' | 'MINUTE' | 'SECOND')。

    示例:

    openGauss=# SELECT numtodsinterval(100, 'HOUR');
     numtodsinterval 
    -----------------
     100:00:00
    (1 row)
    
    openGauss=# SET intervalstyle = a;
    SET
    openGauss=# SELECT numtodsinterval(100, 'HOUR');
            numtodsinterval
    -------------------------------
     +000000004 04:00:00.000000000
    (1 row)
    
  • pg_sleep(seconds)

    描述:服务器线程延迟时间,单位为秒。

    返回值类型:void

    示例:

    openGauss=# SELECT pg_sleep(10);
     pg_sleep 
    ----------
    
    (1 row)
    
  • statement_timestamp()

    描述:当前日期及时间。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT statement_timestamp();
          statement_timestamp      
    -------------------------------
     2017-09-01 17:04:39.119267+08
    (1 row)
    
  • sysdate

    描述:当前日期及时间。

    返回值类型:timestamp

    示例:

    openGauss=# SELECT sysdate;
           sysdate       
    ---------------------
     2017-09-01 17:04:49
    (1 row)
    
  • timeofday()

    描述:当前日期及时间(像clock_timestamp,但是返回时为text)。

    返回值类型:text

    示例:

    openGauss=# SELECT timeofday();
                  timeofday              
    -------------------------------------
     Fri Sep 01 17:05:01.167506 2017 CST
    (1 row)
    
  • transaction_timestamp()

    描述:当前日期及时间,与current_timestamp等效。

    返回值类型:timestamp with time zone

    示例:

    openGauss=# SELECT transaction_timestamp();
         transaction_timestamp     
    -------------------------------
     2017-09-01 17:05:13.534454+08
    (1 row)
    
  • add_months(d,n)

    描述:用于计算时间点d再加上n个月的时间,可通过end_month_calculate兼容性配置项控制表现。

    返回值类型:timestamp

    示例:

    openGauss=# SELECT add_months(to_date('2017-5-29', 'yyyy-mm-dd'), 11) FROM sys_dummy;
         add_months      
    ---------------------
     2018-04-29 00:00:00
    (1 row)
    
  • last_day(d)

    描述:用于计算时间点d当月最后一天的时间。

    返回值类型:timestamp

    示例:

    openGauss=# select last_day(to_date('2017-01-01', 'YYYY-MM-DD')) AS cal_result;
         cal_result      
    ---------------------
     2017-01-31 00:00:00
    (1 row)
    
  • next_day(x,y)

    描述:用于计算时间点x开始的下一个星期几(y)的时间。

    返回值类型:timestamp

    示例:

    openGauss=# select next_day(timestamp '2017-05-25 00:00:00','Sunday')AS cal_result;
         cal_result      
    ---------------------
     2017-05-28 00:00:00
    (1 row)
    
  • tinterval(abstime, abstime )

    描述:用两个绝对时间创建时间间隔。

    返回值类型:tinterval

    示例:

    openGauss=# call tinterval(abstime 'May 10, 1947 23:59:12', abstime 'Mon May  1 00:30:30 1995');
                          tinterval
    -----------------------------------------------------
     ["1947-05-10 23:59:12+09" "1995-05-01 00:30:30+08"]
    (1 row)
    
  • tintervalend(tinterval)

    描述:返回tinteval的结束时间。

    返回值类型:abstime

    示例:

    openGauss=# select tintervalend('["Sep 4, 1983 23:59:12" "Oct4, 1983 23:59:12"]');
          tintervalend
    ------------------------
     1983-10-04 23:59:12+08
    (1 row)
    
  • tintervalrel(tinterval)

    描述:计算并返回tinterval的相对时间。

    返回值类型:reltime

    示例:

    openGauss=# select tintervalrel('["Sep 4, 1983 23:59:12" "Oct4, 1983 23:59:12"]');
     tintervalrel
    --------------
     1 mon
    (1 row)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值