更新时间:2026-01-22 GMT+08:00
分享

其他时间和日期处理函数

justify_days(interval)

描述:调整间隔,使得30天时间周期表示为月。

返回值类型:interval

示例:

1
2
3
4
5
SELECT justify_days(interval '35 days');
 justify_days 
--------------
 1 mon 5 days
(1 row)

justify_hours(interval)

描述:调整时间间隔,使得24小时时间周期表示为日。

返回值类型:interval

示例:

1
2
3
4
5
SELECT JUSTIFY_HOURS(INTERVAL '27 HOURS');
 justify_hours  
----------------
 1 day 03:00:00
(1 row)

justify_interval(interval)

描述:结合justify_days和justify_hours,调整时间间隔。

返回值类型:interval

示例:

1
2
3
4
5
SELECT JUSTIFY_INTERVAL(INTERVAL '1 MON -1 HOUR');
 justify_interval 
------------------
 29 days 23:00:00
(1 row)

numtodsinterval(num, text)

描述:将数字加时间间隔单位转换为INTERVAL DAY TO SECOND类型的值。可以用来对一个日期时间值进行加减计算。可以通过设置参数IntervalStyle为oracle,兼容该函数在Oracle中的interval输出格式。

参数:

  • num,为numeric类型数字,表示要转换的数字。
  • text,为指定间隔单位,支持DAY、 HOUR、 MINUTE和SECOND

示例:

返回当前时间加100小时后的时间。

1
2
3
4
5
SELECT sysdate + numtodsinterval(100, 'HOUR') FROM dual;
      ?column?
---------------------
 2026-01-18 18:49:00
(1 row)

设置参数IntervalStyle为oracle,兼容该函数在Oracle中的interval输出格式。将100小时转换为INTERVAL DAY TO SECOND类型数据。

1
2
3
4
5
6
7
SET intervalstyle = oracle;
SET
SELECT numtodsinterval(100, 'HOUR');
        numtodsinterval
-------------------------------
 +000000004 04:00:00.000000000
(1 row)

convert_tz(timestamp, from_tz, to_tz)

描述:将时间日期值timestamp从from_tz (text)给出的时区转到to_tz(text)给出的时区,返回转换后的时区时间。该函数仅8.2.0及以上集群版本支持。

返回值类型:timestamp without time zone

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
SELECT convert_tz('2018-12-25 13:25:00', '+02:00', '+08:00');
    convert_tz       
--------------------
 2018-12-25 19:25:00
(1 row)
SELECT convert_tz('2000-02-28 23:00:00', 'GMT', 'MET');
    convert_tz       
--------------------
 2000-02-29 00:00:00
(1 row)

isfinite(date)

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

返回值类型:boolean

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
SELECT isfinite(date '2001-02-16');
 isfinite 
----------
 t
(1 row)
SELECT isfinite(date 'infinity');
 isfinite
----------
 f
(1 row)

isfinite(timestamp)

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

返回值类型:boolean

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
SELECT isfinite(timestamp '2001-02-16 21:28:30');
 isfinite 
----------
 t
(1 row)
SELECT isfinite(timestamp 'infinity');
 isfinite
----------
 f
(1 row)

isfinite(interval)

描述:测试是否为有限时间间隔。

返回值类型:boolean

示例:

1
2
3
4
5
SELECT isfinite(interval '4 hours');
 isfinite 
----------
 t
(1 row)

pg_sleep(seconds)

描述:服务器线程延迟时间,以秒计。

返回值类型:void

示例:

1
2
3
4
5
SELECT pg_sleep(10);
 pg_sleep 
----------

(1 row)

相关文档