ora-01850:小时必须介于0和23之间

798qvoo8  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(747)

需要帮助把军队转换成标准时间。
我有下面的代码:但是,它给我错误ora-01850

  1. select to_char (to_date(tst_time, 'HH24MI'), 'HH:MI AM') integer_time FROM STATUS_HISTORY
  2. where tst_id = '75344'

我认为这是因为tst\u time的值只有前2个条目的3个字符。如果tst\U时间只包含3个数字,如何在开始时添加0?

  1. Table Value Expected Result
  2. TST_Time integer_time
  3. 958 09:58 AM
  4. 541 05:41 AM
  5. 1609 04:09 PM
t30tvxxf

t30tvxxf1#

如果我理解正确,你可以用 lpad() :

  1. select to_char(to_date(lpad(tst_time, 4, '0'), 'HH24MI'), 'HH:MI AM') integer_time
  2. from (select '1609' as tst_time from dual union all
  3. select '948' from dual
  4. )

必要时在前面加一个零。

rdrgkggo

rdrgkggo2#

假设 tst_time 是一个数字-这似乎是可能的;如果它是一个字符串,那么它已经有了前导零是有意义的——那么您正在用 to_date() 打电话。
如果进行显式转换,则可以在该点引入前导零:

  1. to_char(to_date(to_char(tst_time, 'FM0000'), 'HH24MI'), 'HH:MI AM')

这个 to_char(tst_time, 'FM0000') 将958转换为0958(调频部分阻止它有一个领先的空间,以允许+/-标志;但在这里并不重要。)
db<>小提琴

相关问题