只是想知道我是否能得到一些帮助。我正在尝试将下面的42499转换为Oracle中的时间字段。该字段当前为varchar 2谢谢你我尝试了to_number(to_date(transactiontime,'hh 24 ss'))ORA-01850:小时必须介于0和23 01850之间。00000 -“小时必须介于0和23之间”* 原因:
pu3pd22g1#
Oracle没有时间数据类型,但您可以转换为日期,就像您尝试的那样;如果你的值表示一个时间,表示午夜过后的秒数,那么你可以使用sssss模型:
sssss
to_date(to_number(transactiontime), 'sssss')
您的客户端可能会被配置为只显示日期或完整的日期时间,因此您可能会看到01-MAY-23或2023-05-01 11:48:19或其他内容。(如果你没有指定任何日期元素,它默认为当前月份的第一天。)你可以使用to_char()将日期转换回字符串:
01-MAY-23
2023-05-01 11:48:19
to_char()
to_char(to_date(to_number(transactiontime), 'sssss'), 'HH24:MI:SS')
这将给予11:48:19。您还可以使用以下命令将数字转换为间隔数据类型:
11:48:19
numtodsinterval(to_number(transactiontime), 'SECOND')
或
to_number(transactiontime) * interval '1' second
两者都给予+000000000 11:48:19.000000000。你不能直接格式化它,但你可以用以下命令剪切你想要的部分:
+000000000 11:48:19.000000000
substr(to_number(transactiontime) * interval '1' second, 12, 8)
fiddle或者你可以把这个时间间隔加到一个固定的日期上(在午夜),比如一个日期文字,比如“date '1970-01- 01';或者-如果您出于某种原因将交易日期和时间存储为两个单独的字段(这很少,如果有的话,是明智的)-到 * 那个 * 日期。然后,您可以根据需要设置组合值的格式。
c6ubokkw2#
要将数字转换为日期,只需TO_DATE()函数即可自动转换它,并且还可以为您想要的输出提供参数。以下是格式和语法信息Oracle Dates的完整指南您可以使用这个查询,它将为您工作。“Dual”基本上用于当你想要一个虚拟表(行/列)数据集和系统时间等。
Select TO_DATE('42499', 'HH:MM:SS') FROM dual;
2条答案
按热度按时间pu3pd22g1#
Oracle没有时间数据类型,但您可以转换为日期,就像您尝试的那样;如果你的值表示一个时间,表示午夜过后的秒数,那么你可以使用
sssss
模型:您的客户端可能会被配置为只显示日期或完整的日期时间,因此您可能会看到
01-MAY-23
或2023-05-01 11:48:19
或其他内容。(如果你没有指定任何日期元素,它默认为当前月份的第一天。)你可以使用to_char()
将日期转换回字符串:这将给予
11:48:19
。您还可以使用以下命令将数字转换为间隔数据类型:
或
两者都给予
+000000000 11:48:19.000000000
。你不能直接格式化它,但你可以用以下命令剪切你想要的部分:
fiddle
或者你可以把这个时间间隔加到一个固定的日期上(在午夜),比如一个日期文字,比如“date '1970-01- 01';或者-如果您出于某种原因将交易日期和时间存储为两个单独的字段(这很少,如果有的话,是明智的)-到 * 那个 * 日期。然后,您可以根据需要设置组合值的格式。
c6ubokkw2#
要将数字转换为日期,只需TO_DATE()函数即可自动转换它,并且还可以为您想要的输出提供参数。
以下是格式和语法信息Oracle Dates的完整指南
您可以使用这个查询,它将为您工作。“Dual”基本上用于当你想要一个虚拟表(行/列)数据集和系统时间等。