在Oracle DB中比较两个日期并不能得出正确的结果

时间:2019-03-05 10:59:59

标签: sql oracle datetime

我的表中有两个DATE列,其值如下:

Order_date  Service_date
01-06-17    31-01-18
01-06-17    01-10-18
01-06-17    01-07-18
01-06-17    01-04-18`

当我运行以下查询时:

SELECT
    TRUNC(Order_date) Order_date,
    TRUNC(Service_date) Service_date,
    CASE
        WHEN trunc(Order_date) > trunc(Service_date) THEN 'Y'
        ELSE 'N'
    END actual
FROM
    table_x;

我得到的结果是:

Order_date  Service_date  actual
01-06-17    31-01-18      Y

预期答案应该为“ N”。

但是,如果我运行类似的查询,则通过实际传递DATE值,它可以为我提供适当的结果。

SELECT
    to_date('01-06-17','DD-MM-RR') Order_date,
    to_date('31-01-18', 'DD-MM-RR') Service_date,
    CASE
        WHEN to_date('01-06-17','DD-MM-RR') > to_date('31-01-18', 'DD-MM-RR') THEN 'Y'
        ELSE 'N'
    END actual
FROM
    table_x;

Order_date  Service_date  actual
01-06-17    31-01-18      N

为什么在原始查询中没有给出预期的结果?

0 个答案:

没有答案