查询之间的oracle没有结束日期时间

时间:2017-07-06 09:39:16

标签: java sql oracle hibernate

Oracle之间的查询忽略结束日期时间。

以下是我的表格。

Id   Upload Date
1   05-JUL-17 12.02.11.309000000 PM
2   05-JUL-17 12.03.34.123000000 PM
3   05-JUL-17 12.04.15.334000000 PM

我的要求是在给定的日期时间之间获取文件。

 select * from fileupload where uploaddate between to_DATE('05-07-17 12:02:11', 'DD-MM-YY HH24:MI:SS') and to_DATE('05-07-17 12:04:15', 'DD-MM-YY HH24:MI:SS')

select * from fileupload where uploaddate between to_timestamp('05-07-17 12:02:11', 'DD-MM-YY HH24:MI:SS') and to_timestamp('05-07-17 12:04:15', 'DD-MM-YY HH24:MI:SS')

两个查询都不返回它只返回两行的结束日期时间。

Id   Upload Date
1   05-JUL-17 12.02.11.309000000 PM
2   05-JUL-17 12.03.34.123000000 PM

但预期的结果是

 Id   Upload Date
    1   05-JUL-17 12.02.11.309000000 PM
    2   05-JUL-17 12.03.34.123000000 PM
    3   05-JUL-17 12.04.15.334000000 PM

为什么在使用之间没有提取结束日期时间。

任何帮助将不胜感激!!!!

3 个答案:

答案 0 :(得分:2)

to_DATE('05-07-17 12:04:15', 'DD-MM-YY HH24:MI:SS')相当于05-JUL-17 12.04.15.000000000 PM之前的05-JUL-17 12.04.15.334000000 PM

因此,第三个结果未被提取,因为它不在334毫秒的范围内。

要提取更新查询所需的所有记录,而不考虑以下毫秒:

 select * from fileupload 
 where  cast(uploaddate as date) 
        between to_DATE('05-07-17 12:02:11', 'DD-MM-YY HH24:MI:SS') 
        and to_DATE('05-07-17 12:04:15', 'DD-MM-YY HH24:MI:SS')

答案 1 :(得分:0)

您需要使用TO_TIMESTAMP() ..它可以处理毫秒。

TO_DATE不处理毫秒

答案 2 :(得分:0)

to_DATE('05-07-17 12:04:15', 'DD-MM-YY HH24:MI:SS')小于"05-JUL-17 12.04.15.334000000 PM"(因为它是05-JUL-17 12.04.15.00),尝试将to_DATE('05-07-17 12:04:15', 'DD-MM-YY HH24:MI:SS')更改为to_DATE('05-07-17 12:04:16', 'DD-MM-YY HH24:MI:SS')