一尘不染

Oracle SQL:where子句中的时间戳

sql

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

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

即:我需要以SECONDS的时间戳精度查找行。我该如何实现?

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


阅读 228

收藏
2021-03-17

共1个答案

一尘不染

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')

笔记

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

2021-03-17