匹配SQL查询中的部分日期?

时间:2015-06-30 18:21:55

标签: sql oracle

我正在寻找一种方法来匹配日期,以及与我的数据库中的记录相关的日期。

我知道如何将字符串与LIKE运算符匹配,但它不适用于日期;除非我只搜索一个数字(比如所有记录都是10,所有记录来自21,等等)。例如,一旦我把分钟放在一起,LIKE的搜索就不会返回任何记录。

你如何实际搜索部分日期?我的目标是找到比部分日期更新的所有记录;在当天。

select * from CLIENTS where CLOSING like '%12:30%'

这不符合任何事情;但是,如果我只使用12或30,它可以工作....虽然它没有做我想要的。

我必须在字符串中转换日期吗?我从另一个进程得到一个部分日期,我希望匹配比部分日期更新的所有记录。

2 个答案:

答案 0 :(得分:4)

尝试此查询

select * from CLIENTS where 
TO_CHAR(CLOSING , 'dd-mm-yy hh24:mi:ss') like '%12:30%'

select * from CLIENTS where 
TO_CHAR(CLOSING , 'hh24:mi') = '12:30'

答案 1 :(得分:3)

如果您希望贷款比今天晚上12:30更近,您最好使用日期算术而不是依赖字符串转换

SELECT *
  FROM clients
 WHERE closing >= trunc(sysdate) + interval '12' hour + interval '30' minute;

SELECT *
  FROM clients
 WHERE closing >= trunc(sysdate) + 12.5/24

此处,trunc(sysdate)今天午夜返回。然后你可以添加一个小数天(1/24增加一小时所以12.5 / 24将你带到12:30 pm)或者你可以添加一个或多个间隔(你可以使用to_dsinterval来创建间隔)。