Oracle SQL-将数字值转换为实时时间戳仅时间-无日期

问题描述

我有一个ETL流程,该流程从Oracle数据库的源中读取数据,其中包括一列类型数字,其中包含时间戳(例如'131516'='HHMMSS')。 在作为Postgres数据库的目标中,该值应写在“时间”类型的列中,其格式应为“ HH:MM:SS”。

我尝试使用to_char,to_date和to_timestamp进行不同的转换,但没有得到合适的结果。

SELECT to_date(to_char(131516,'000000'),'hh24:mi:ss') from table

不幸的是,它返回带有日期的时间戳,但只有时间。

如何获取格式为'HH:MM:SS'的数字作为时间?

谢谢。

解决方法

将数字值传递到ETL中的PostgreSQL。 :的结果中没有冒号(to_char(131516,'000000'))字符,因此请勿在格式掩码中包含它们。

将其转换为timestamp后,将值转换为time

select to_timestamp(to_char(131516,'000000'),'HH24MISS')::time;

 to_timestamp 
--------------
 13:15:16
(1 row)

,

请在ETL流程的源查询中使用以下强制转换功能,

SELECT to_char(to_timestamp('131516','hh24miss'),'hh24:mi:ss') from table;

演示 https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=5b890d21c0c27ea7be3ac4b42ad813d1

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...