其他时间和日期处理函数
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) |