Oracle - 使用to_date,如何将varchar转换为今天的日期

时间:2013-03-16 13:51:38

标签: sql oracle10g

我有一个表格,我将时间存储为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

由于

2 个答案:

答案 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

SQL Fiddle

trunc(sysdate)是今天最早的,trunc(sysdate, 'mm')是本月的开始。 Oracle的日期算术意味着它返回今天和月初之间的日差;为您提供需要添加到原始TO_DATE()的差异。