将Varchar转换为任何时间格式

问题描述 投票:0回答:1

我有一个名为begin_time的varchar列,它将24小时时间存储为没有时间格式的varchar,即1330

我需要将此varchar转换为可用的时间戳,日期时间等,我可以轻松地将varchar转换为标准时间格式(1:30 PM

只要我可以将varchar转换为可以操作为标准格式的格式,结束格式类型无关紧要。

我试过调查Cognos-specific format tricks(这些函数适用于度量标准设计器,我使用的是Report Studio)无济于事。我在寻找特定于oracle的技巧时发现的方法似乎过于复杂(使用疯狂的长正则表达式规则)来满足我的需要。

如果我需要涉及日期,我可以使用列start_date并附加varchar时间。注意:start_date采用date格式

select 
to_date('08/27/2018','MM/DD/YYYY') as start_date
, '1300' as begin_time
from dual

我最终需要的是能够输出时间为1:00 PM

任何帮助,将不胜感激。我在这上面撞墙...我习惯于使用专有代码一段时间,并且对真正的日期时间格式没有太多经验。

更新回答问题

  • Alex Poole,我没有声称这个系统是最好的...它是供应商提供的。 :)
  • BEGIN_TIME总是4个字符
  • 它确实看起来像是在过度思考它...... Littlefoot可能已经将它钉在了头上,但遗憾的是,直到明天我才有机会测试它。

谢谢大家的快速回复。现在请求结束后,我可能会留下头发:)

最后的想法

从中吸取的教训很简单:如果您正在处理时间格式,请不要忘记使用日期格式功能。

oracle oracle12c cognos cognos-10
1个回答
2
投票

在寻找这个?

SQL> with test (col) as
  2    (select '1330' from dual)
  3  select to_char(to_date(col, 'hh24mi'), 'hh:mi am') result
  4  from test;

RESULT
--------
01:30 PM

SQL>

它有什么作用?

  • TO_DATE将您拥有的字符串(例如1330)转换为有效的DATE值。默认情况下,它将是截断到当前月份的第一个日期值: SQL> alter session set nls_Date_format = 'dd.mm.yyyy hh24:Mi'; Session altered. SQL> select to_date('1330', 'hh24mi') res1 from dual; RES1 ---------------- 01.04.2019 13:30 SQL>
  • TO_CHAR应用于它,再次使用适当的格式掩码,返回所需的结果
© www.soinside.com 2019 - 2024. All rights reserved.