2

時間をvarcharとして保存するテーブルがあります:

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

このクエリを変更して、時刻の値に今日の日付をプレフィックスとして付けて、代わりに次のように取得するにはどうすればよいですか: (16/03/2013 は今日の日付です)

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 に答える