我有一个表格,我将时间存储为varchars:
Times
starttime
00:00
16:00
22:00
从这张表中我可以将列转换为这样的日期:
Select to_date(starttime,'hh24:mi') from times
这给了我以下内容:
01/03/2013 00:00:00
01/03/2013 16:00:00
01/03/2013 22:00:00
如何更改此查询以便我可以在时间值前加上今天的日期前缀,以便我得到以下内容:(2013年3月16日是今天的日期)
16/03/2013 00:00:00
16/03/2013 16:00:00
16/03/2013 22:00:00
由于
答案 0 :(得分:5)
to_date(to_char(sysdate, 'dd.mm.yyyy')||' '||starttime, 'dd.mm.yyyy hh24:mi')
答案 1 :(得分:1)
您可以添加当前日期和月初之间的差异。
,我更喜欢用字符串操作,因为你坚持使用日期,但它没有多大区别。您可以使用TRUNC()来解决问题:
select to_date('09:00','hh24:mi') + ( trunc(sysdate) - trunc(sysdate, 'mm'))
from dual
trunc(sysdate)
是今天最早的,trunc(sysdate, 'mm')
是本月的开始。 Oracle的日期算术意味着它返回今天和月初之间的日差;为您提供需要添加到原始TO_DATE()的差异。