我正在寻找一种方法来匹配日期,以及与我的数据库中的记录相关的日期。
我知道如何将字符串与LIKE运算符匹配,但它不适用于日期;除非我只搜索一个数字(比如所有记录都是10,所有记录来自21,等等)。例如,一旦我把分钟放在一起,LIKE的搜索就不会返回任何记录。
你如何实际搜索部分日期?我的目标是找到比部分日期更新的所有记录;在当天。
select * from CLIENTS where CLOSING like '%12:30%'
这不符合任何事情;但是,如果我只使用12或30,它可以工作....虽然它没有做我想要的。
我必须在字符串中转换日期吗?我从另一个进程得到一个部分日期,我希望匹配比部分日期更新的所有记录。
答案 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
来创建间隔)。