select flightdate from flight;
FLIGHTDATE 01-DEC-12 10.09.01.340000 AM 02-DEC-12 10.09.01.340000 AM 02-DEC-12 10.09.01.340000 AM 03-DEC-12 10.09.01.340000 AM 05-DEC-12 10.09.01.340000 AM 03-DEC-12 10.09.01.340000 AM 04-DEC-12 10.09.01.340000 AM 06-DEC-12 10.09.01.340000 AM
现在我想获得flightdate> 03-DEC-12
我已将查询编写为
select flightdate from flight where flightdate>'03-DEC-12'
输出:
03-DEC-12 10.09.01.340000 AM 05-DEC-12 10.09.01.340000 AM 03-DEC-12 10.09.01.340000 AM 04-DEC-12 10.09.01.340000 AM 06-DEC-12 10.09.01.340000 AM
我甚至得到了03-DEC-12
答案 0 :(得分:3)
您将从12月3日开始收到活动,因为03-DEC-12
被解释为2012-12-03T00:00:00
,而午夜后10小时的活动确实匹配。
如果您想要从第二天开始的活动,请使用
SELECT *
FROM flight
WHERE FLIGHTDATE >= DATE '2012-12-04'
-- or FLIGHTDATE >= (DATE '2012-12-03') + 1
您还可以使用TRUNC
function将日期时间截断为日期,但这可能会使查询无法进行查询:
SELECT *
FROM flight
WHERE TRUNC(FLIGHTDATE) > TO_DATE('03-DEC-12', 'DD-MON-YY')
答案 1 :(得分:0)
此处您的Flightdate列包含时间戳(03-DEC-12 10.09.01.340000)。
在where where子句中,您提供了flightdate> '03 -DEC-12'。
Oracle将您提供的日期视为flightdate> '03 -DEC-12 00.00.00.000'
因此,当您处理日期时,最好使用TO_DATE()函数。