web-dev-qa-db-ja.com

Oracle SQL:where句のタイムスタンプ

特定の時間枠内で行を検索する必要があります。

select * 
from TableA 
where startdate >= '12-01-2012 21:24:00' 
  and startdate <= '12-01-2012 21:25:33'

つまり:SECONDSのタイムスタンプ精度で行を検索する必要があります。どうすればこれを達成できますか?

参考:startdate列のタイプはTIMESTAMPです。

47
sid

to_timestamp()

to_timestamp()を使用して、文字列を適切なtimestamp値に変換する必要があります。

to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')

現在まで()

列のタイプがDATE(秒もサポート)の場合、to_date()を使用する必要があります

to_date('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')

これをwhere状態にするには、次を使用します。

select * 
from TableA 
where startdate >= to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')
  and startdate <= to_timestamp('12-01-2012 21:25:33', 'dd-mm-yyyy hh24:mi:ss')

注意

タイプtimestampの列でto_timestamp()を使用する必要はありません。

101

タイムスタンプに秒の小数部を使用してこのスレッドにアクセスするすべての人に対して:

to_timestamp('2018-11-03 12:35:20.419000', 'YYYY-MM-DD HH24:MI:SS.FF')

4
jyapx