如何解决如何将 21-03-18 14:01:03.000000000 AMERICA/TORONTO 转换为 2021-03-18 14:01:03.000-04:00
请帮我将 TIMESTAMP(6) WITH TIME ZONE 数据类型中的输入“21-03-18 14:01:03.000000000 AMERICA/TORONTO”转换为输出“2021-03-18 14:01:03.000-04” :00" 在 Oracle 中。
解决方法
如前所述,之前很多次,如果您的“输入”是 TIMESTAMP 类型的列或变量(该类型的任何变体),则数据NOT“21-03- 18 14:01:03.000000000 AMERICA/TORONTO"。Oracle DATE 和 TIMESTAMP 类型是内部二进制结构。“格式”是供人类阅读的字符串表示形式。
正如您的问题所读,答案只是使用 TO_CHAR 函数将该内部 TIMESTAMP 转换为您希望看到的任何格式:
select to_char(my_timestamp_column,'yyyy-mm-dd hh24:mi:ss') from my_table;
有关更多格式元素,请参阅 SQL 语言参考。
SQL> create table my_test (my_date TIMESTAMP(6) WITH TIME ZONE
2 )
3 ;
Table created.
SQL> insert into my_test values (systimestamp);
1 row created.
SQL> commit;
Commit complete.
SQL> select to_char(my_date,'yyyy-mm-dd hh24:mi:ss.ff6TZH:TZM')
2 from my_test
3 ;
TO_CHAR(MY_DATE,'YYYY-MM-DDHH24:
--------------------------------
2021-03-26 14:29:21.570971-05:00
1 row selected.
SQL> --
SQL> drop table my_test purge;
Table dropped.
,
好的 - 您的输入似乎是带时区的时间戳(以您的“输入”格式向您显示,但这与问题无关)。
您想以您选择的格式将其转换为字符串。
这可以按如下方式完成:
with
inputs (ts_tz) as (
select to_timestamp_tz('21-03-18 14:01:03.000000000 AMERICA/TORONTO','rr-mm-dd hh24:mi:ss.ff TZR')
from dual
)
select to_char(ts_tz,'yyyy-mm-dd hh24:mi:ss.ff3tzh:tzm') as result
from inputs
;
RESULT
-----------------------------
2021-03-18 14:01:03.000-04:00
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。