如何将21-03-18 14:01:03.000000000 AMERICA/TORONTO转换为2021-03-18



请帮我转换输入"21-03-18 14:01:03.000000000美国/多伦多";其为TIMESTAMP(6(WITH TIME ZONE数据类型;2021-03-18 14:01:03.000-04:00";在Oracle中。

如前所述,如果您的"input’是TIMESTAMP类型的列或变量(其任何变体(,则数据为NOT";21-03-18 14:01:03.000000000美国/多伦多";。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.

OK-您的输入似乎是一个带时区的时间戳(它以"输入"格式显示给您,但这与问题无关(。

您希望将其转换为字符串,格式为您选择的格式。

这可以按如下方式进行:

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

相关内容

最新更新