我有一个名为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
任何帮助,将不胜感激。我在这上面撞墙...我习惯于使用专有代码一段时间,并且对真正的日期时间格式没有太多经验。
BEGIN_TIME
总是4个字符谢谢大家的快速回复。现在请求结束后,我可能会留下头发:)
从中吸取的教训很简单:如果您正在处理时间格式,请不要忘记使用日期格式功能。
在寻找这个?
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
应用于它,再次使用适当的格式掩码,返回所需的结果