# 其他时间和日期处理函数
#### justify_days(interval)
描述：调整间隔，使得30天时间周期表示为月。
返回值类型：interval
示例：
```
SELECT justify_days(interval '35 days');
 justify_days 
--------------
 1 mon 5 days
(1 row)
```
#### justify_hours(interval)
描述：调整时间间隔，使得24小时时间周期表示为日。
返回值类型：interval
示例：
```
SELECT JUSTIFY_HOURS(INTERVAL '27 HOURS');
 justify_hours  
----------------
 1 day 03:00:00
(1 row)
```
#### justify_interval(interval)
描述：结合justify_days和justify_hours，调整时间间隔。
返回值类型：interval
示例：
```
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小时后的时间。
```
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类型数据。
```
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
示例：
```
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
示例：
```
SELECT isfinite(date '2001-02-16');
 isfinite 
----------
 t
(1 row)
SELECT isfinite(date 'infinity');
 isfinite
----------
 f
(1 row)
```
#### isfinite(timestamp)
描述：测试判断是否为有限时间戳。
返回值类型：boolean
示例：
```
SELECT isfinite(timestamp '2001-02-16 21:28:30');
 isfinite 
----------
 t
(1 row)
SELECT isfinite(timestamp 'infinity');
 isfinite
----------
 f
(1 row)
```
#### isfinite(interval)
描述：测试是否为有限时间间隔。
返回值类型：boolean
示例：
```
SELECT isfinite(interval '4 hours');
 isfinite 
----------
 t
(1 row)
```
#### pg_sleep(seconds)
描述：服务器线程延迟时间，以秒计。
返回值类型：void
示例：
```
SELECT pg_sleep(10);
 pg_sleep 
----------
(1 row)
```
