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
为什么在使用之间没有提取结束日期时间。
任何帮助将不胜感激!!!!
答案 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')