时间/日期函数
add_months(date,integer)
返回date加上integer的值,返回值为DATE类型 。
atlasdb=# select add_months(sysdate,4); add_months --------------------- 2020-07-10 02:51:07 (1 row)
last_day(date)
返回date所在月的最后一天。
atlasdb=# select last_day('2011-02-11'); last_day --------------------- 2011-02-28 00:00:00 (1 row)
months_between(date1, date2)
返回date1与date2之间相差的月数,当date2早于date1,返回值为负数。
atlasdb=# select months_between(sysdate,sysdate+1); months_between -------------------- -0.032258064516129 (1 row)
nanvl(n2, n1)
当单精度或双精度浮点数n2的值为NAN,则返回n1,否则返回n2。
atlasdb=# select oracle.nanvl(1,2) atlasdb-# ; nanvl ------- 1 (1 row)
next_day(date, char)
返回date后的第一个自然日(包括工作日、休息日和节假日),返回值为DATE类型。
atlasdb=# select pg_catalog.next_day('2020-03-12',1); next_day ------------ 2020-03-15 (1 row)
numtodsinterval(n, interval_unit)
根据INTERVAL数据类型单元interval_unit(取值范围:'DAY'、'HOUR'、'MINUTE'、'SECOND'),将数字n转换为数据类型INTERVALDAY TO xxx。
atlasdb=# select oracle.numtodsinterval('1','DAY'); numtodsinterval ----------------- 1 day (1 row)
numtoyminterval(n, interval_unit)
根据INTERVAL数据类型单元interval_unit(取值范围:'DAY'、'HOUR'、'MINUTE'、'SECOND'),将数字n转换为数据类型INTERVALDAY TO xxx。
atlasdb=# select oracle.numtoyminterval('1','MONTH'); numtoyminterval ----------------- 1 mon (1 row)
round(date, fmt)
按照fmt指定的日期格式对date进行四舍五入处理,返回值类型为DATE。如果省略fmt,则返回最近的一天。
atlasdb=# select pg_catalog.round('2011-02-11'::date); round --------------------- 2011-02-11 00:00:00 (1 row)
to_timestamp_tz
将char时间字符串按照fmt格式转换为timestamp WITH TIMEZONE数据类型,char支持的类型有CHAR、VARCHAR2、NCHAR、NVARCHAR2、TIMESTAMP。如果省略fmt,则char必须采用TIMESTAMP WITH TIMEZONE数据类型的默认格式。
atlasdb=# select oracle.to_timestamp_tz('1992-04-24'); to_timestamp_tz ------------------------ 1992-04-24 00:00:00+08 (1 row)
NEW_TIME(DATE, VARCHAR, VARCHAR)
将日期和时间转换为另外时区。
atlasdb=# select NEW_TIME('2005/05/29 01:45', 'AST', 'PST'); new_time --------------------- 2005-05-28 21:45:00 (1 row)
EXTRACT
EXTRACT从日期时间或间隔表达式中提取并返回指定的日期时间字段的值。
atlasdb=# SELECT EXTRACT(month FROM sysdate) from dual; date_part ----------- 5 (1 row)
TRUNC (date)
TRUNC返回日期,其中日期的时间部分被截断为格式模型fmt指定的单位。
atlasdb=# SELECT TRUNC(TO_DATE('27-OCT-92','DD-MON-YY'), 'YEAR');
trunc
---------------------
1992-01-01 00:00:00
(1 row)