如何在Oracle 19c中使用to_timestamp_tz将带时区字符串转为带时区时间戳?
用Oracle 19c的TO_TIMESTAMP_TZ转换指定带时区字符串
直接使用TO_TIMESTAMP_TZ函数并匹配对应的格式掩码即可完成转换,下面是具体实现:
基础实现(识别时区缩写EDT)
执行以下SQL语句:
SELECT TO_TIMESTAMP_TZ('09/23/2022 12:44 PM EDT', 'MM/DD/YYYY HH:MI AM TZR') AS converted_tstz FROM DUAL;
格式掩码说明
MM:匹配两位数的月份(09)DD:匹配两位数的日期(23)YYYY:匹配四位数的年份(2022)HH:匹配12小时制的小时数(12)MI:匹配两位数的分钟(44)AM:匹配上午/下午标记(自动兼容PM)TZR:识别时区区域缩写(如EDT)
备选方案(使用UTC偏移量)
如果数据库时区文件未包含EDT的映射(可通过SELECT version FROM V$TIMEZONE_FILE;查看时区文件版本),可以直接用UTC偏移量替代时区缩写:
SELECT TO_TIMESTAMP_TZ('09/23/2022 12:44 PM -04:00', 'MM/DD/YYYY HH:MI AM TZH:TZM') AS converted_tstz FROM DUAL;
这里TZH:TZM用于匹配UTC偏移格式(EDT对应UTC-4)。
内容的提问来源于stack exchange,提问作者Feras Tamesh
相关产品推荐
相关产品推荐

