Oracle NEW_TIME() 函数使用指南

Oracle NEW_TIME() 是一个内置函数,它将日期从指定时区转换为另一个指定时区并返回结果。

在使用此函数之前,您必须将 NLS_DATE_FORMAT 设置为显示 24 小时制时间。

Oracle NEW_TIME() 语法

这里是 Oracle NEW_TIME() 函数的语法:

NEW_TIME(date, timezone1, timezone2)

参数

date

必需的。

timezone1

必需的。

timezone2

必需的。

参数 timezone1timezone2 可以是以下任何文本字符串:

  • ASTADT:大西洋标准时间或夏令时
  • BSTBDT:白令标准时间或夏令时
  • CSTCDT:中央标准时间或夏令时
  • ESTEDT:东部标准时间或夏令时
  • GMT:格林威治标准时间
  • HSTHDT:阿拉斯加-夏威夷标准时间或夏令时。
  • MSTMDT:山区标准时间或夏令时
  • NST:纽芬兰标准时间
  • PSTPDT:太平洋标准时间或夏令时
  • YSTYDT:育空标准时间或夏令时

返回值

Oracle NEW_TIME(date, timezone1, timezone2) 函数返回将 datetimezone1 时区转为 timezone2 时区的日期和时间。 无论 date 是什么类型,该函数的返回值类型总是 DATE

如果任意一个参数为 NULLNEW_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 参数

如果任意一个参数为 NULLNEW_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() 是一个内置函数,它将日期从指定时区转换为另一个指定时区并返回结果。