2

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

谢谢

4

2 回答 2

5
to_date(to_char(sysdate, 'dd.mm.yyyy')||' '||starttime, 'dd.mm.yyyy hh24:mi')
于 2013-03-16T13:54:54.380 回答
1

您可以添加当前日期和月初之间的差异。当您坚持使用日期时,我更喜欢它而不是字符串操作,但这并没有太大区别。

您可以使用TRUNC()来解决它:

select to_date('09:00','hh24:mi') + ( trunc(sysdate) - trunc(sysdate, 'mm'))
  from dual

SQL小提琴

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

于 2013-03-16T13:57:51.593 回答