Oracle NEW_TIME() 函数使用指南
Oracle NEW_TIME() 是一个内置函数,它将日期从指定时区转换为另一个指定时区并返回结果。
在使用此函数之前,您必须将 NLS_DATE_FORMAT 设置为显示 24 小时制时间。
Oracle NEW_TIME() 语法
这里是 Oracle NEW_TIME() 函数的语法:
NEW_TIME(date, timezone1, timezone2)
参数
date-
必需的。
timezone1-
必需的。
timezone2-
必需的。
参数 timezone1 和 timezone2 可以是以下任何文本字符串:
AST、ADT:大西洋标准时间或夏令时BST、BDT:白令标准时间或夏令时CST、CDT:中央标准时间或夏令时EST、EDT:东部标准时间或夏令时GMT:格林威治标准时间HST、HDT:阿拉斯加-夏威夷标准时间或夏令时。MST、MDT:山区标准时间或夏令时NST:纽芬兰标准时间PST、PDT:太平洋标准时间或夏令时YST、YDT:育空标准时间或夏令时
返回值
Oracle NEW_TIME(date, timezone1, timezone2) 函数返回将 date 从 timezone1 时区转为 timezone2 时区的日期和时间。 无论 date 是什么类型,该函数的返回值类型总是 DATE。
如果任意一个参数为 NULL, NEW_TIME() 将返回 NULL。
Oracle NEW_TIME() 示例
这里有几个展示了 Oracle NEW_TIME() 函数用法的示例。
基本用法
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT
NEW_TIME('2023-02-15 15:30:45', 'GMT', 'NST')
"NEW_TIME('2023-02-15 15:30:45', 'GMT', 'NST')"
FROM dual;
输出:
NEW_TIME('2023-02-15 15:30:45', 'GMT', 'NST')
________________________________________________
2023-02-15 12:00:45当前时间
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT
NEW_TIME(CURRENT_DATE, 'GMT', 'NST')
"NEW_TIME('2023-02-15 15:30:45', 'GMT', 'NST')"
FROM dual;
输出:
NEW_TIME('2023-02-15 15:30:45', 'GMT', 'NST')
________________________________________________
2023-02-13 07:27:40本示例中,我们使用 CURRENT_DATE 获取当前的日期和时间。
非法时区
如果那你指定了一个非法的时区, Oracle 将报给一个错误
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT
NEW_TIME(CURRENT_DATE, 'Err', 'NST')
FROM dual;
输出:
SQL Error: ORA-01857: not a valid time zone
01857. 00000 - "not a valid time zone"本示例中,我们使用 CURRENT_DATE 获取当前的日期和时间。
NULL 参数
如果任意一个参数为 NULL, NEW_TIME() 将返回 NULL。
SET NULL 'NULL';
SELECT
NEW_TIME(NULL, 'GMT', 'NST') NULL_1,
NEW_TIME(CURRENT_DATE, NULL, 'NST') NULL_2,
NEW_TIME(CURRENT_DATE, 'GMT', NULL) NULL_3,
NEW_TIME(NULL, NULL, NULL) NULL_4
FROM dual;
输出:
NULL_1 NULL_2 NULL_3 NULL_4
_________ _________ _________ _________
NULL NULL NULL NULL在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。
结论
Oracle NEW_TIME() 是一个内置函数,它将日期从指定时区转换为另一个指定时区并返回结果。