Oracle SQL:where子句中的时间戳

时间:2012-01-13 18:27:24

标签: sql oracle where sql-timestamp

我需要在特定时间范围内查找行。

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

即:我需要查找时间戳精度为SECONDS的行。我如何实现这一目标?

仅供参考:startdate列的类型为TIMESTAMP

2 个答案:

答案 0 :(得分:95)

TO_TIMESTAMP()

您需要使用to_timestamp()将字符串转换为正确的timestamp值:

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

TO_DATE()

如果您的列属于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')

注意

您永远不需要在to_timestamp()类型的列上使用timestamp

答案 1 :(得分:3)

对于在时间戳中使用小数秒的所有进入此线程的人,请使用:

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