数字到时间Oracle

f1tvaqid  于 2023-06-05  发布在  Oracle
关注(0)|答案(2)|浏览(499)

只是想知道我是否能得到一些帮助。我正在尝试将下面的42499转换为Oracle中的时间字段。该字段当前为varchar 2
谢谢你
我尝试了to_number(to_date(transactiontime,'hh 24 ss'))
ORA-01850:小时必须介于0和23 01850之间。00000 -“小时必须介于0和23之间”* 原因:

  • 行动:
pu3pd22g

pu3pd22g1#

Oracle没有时间数据类型,但您可以转换为日期,就像您尝试的那样;如果你的值表示一个时间,表示午夜过后的秒数,那么你可以使用sssss模型:

to_date(to_number(transactiontime), 'sssss')

您的客户端可能会被配置为只显示日期或完整的日期时间,因此您可能会看到01-MAY-232023-05-01 11:48:19或其他内容。(如果你没有指定任何日期元素,它默认为当前月份的第一天。)你可以使用to_char()将日期转换回字符串:

to_char(to_date(to_number(transactiontime), 'sssss'), 'HH24:MI:SS')

这将给予11:48:19
您还可以使用以下命令将数字转换为间隔数据类型:

numtodsinterval(to_number(transactiontime), 'SECOND')

to_number(transactiontime) * interval '1' second

两者都给予+000000000 11:48:19.000000000
你不能直接格式化它,但你可以用以下命令剪切你想要的部分:

substr(to_number(transactiontime) * interval '1' second, 12, 8)

fiddle
或者你可以把这个时间间隔加到一个固定的日期上(在午夜),比如一个日期文字,比如“date '1970-01- 01';或者-如果您出于某种原因将交易日期和时间存储为两个单独的字段(这很少,如果有的话,是明智的)-到 * 那个 * 日期。然后,您可以根据需要设置组合值的格式。

c6ubokkw

c6ubokkw2#

要将数字转换为日期,只需TO_DATE()函数即可自动转换它,并且还可以为您想要的输出提供参数。
以下是格式和语法信息Oracle Dates的完整指南
您可以使用这个查询,它将为您工作。“Dual”基本上用于当你想要一个虚拟表(行/列)数据集和系统时间等。

Select TO_DATE('42499', 'HH:MM:SS') FROM dual;

相关问题