我有一个字符字段,按MMDDYYHHMMSS
的顺序标记(注意:不是日期而是字符字段)。我希望将我的SQL中的日期字段转换为此格式dd.mm.yyyy. hh24:mi
。
我的问题是sql没有时间就把它踢到了YYYY-MM-DD字段。这部分sql看起来像这样:
TO_DATE(SUBSTR(MOPACTIVITY.MOPID,3,2)||'.'||SUBSTR(MOPACTIVITY.MOPID,1,2)
||'.'||'20'||SUBSTR(MOPACTIVITY.MOPID,5,2)||'.'||SUBSTR(MOPACTIVITY.MOPID,7,2)
||':'||SUBSTR(MOPACTIVITY.MOPID,9,2)||':'||SUBSTR(MOPACTIVITY.MOPID,11,2)
, 'dd.mm.yyyy. hh24:mi:ss') "XXX",
关于如何获得转换时间的任何问题?
答案 0 :(得分:1)
不需要这么复杂的表达:
to_date(MOPID, 'MMDDYYHH24MISS')
假设时间部分为24小时格式(00-23,而不是00-12),会将列转换为实际DATE
列。如果您在varchar列中没有真正的有效日期,这也将失败。
将我的SQL中的日期字段改为此格式
DATE
列不具有“格式”!格式仅在您显示时应用。
如果您的意思是要将存储在列中的varchar转换为另一个具有不同日期格式的varchar,最简单的方法可能就是将上面的表达式转换回varchar:
to_char(to_date(MOPID, 'MMDDYYHH24MISS'), 'dd.mm.yyyy. hh24:mi')
在申请之前,请允许我发表一条评论:
DATE
列中,永远不要将它们存储在VARCHAR
列中。如果您从一开始就这样做了,那么您只需要在to_char()
列中应用一个DATE
即可获得所需的显示格式。