我有一个名为begin_time
的varchar列,该列将24小时制的时间存储为没有时间格式的varchar,即1330
我需要将此varchar转换为可用的时间戳,日期时间等,以便可以轻松地将varchar转换为标准时间格式(1:30 PM
)
最终格式类型无关紧要,只要我可以将varchar转换为可以处理为标准格式的格式即可。
我尝试研究Cognos-specific format tricks(这些功能适用于Metric Designer,并且我正在使用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个字符感谢大家的快速响应。该请求现在结束后,我可能还剩下头发:)
我从中学到的教训很简单:如果您正在处理时间格式,请不要放弃使用 Date 格式功能的想法。
答案 0 :(得分: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
,并再次使用适当的格式掩码,将返回所需的结果