【发布时间】:2014-08-22 15:23:47
【问题描述】:
数据库:Oracle
简化版:
表T有一列:D(DATE类型)
现在桌子是空的。
INSERT INTO T
(D) VALUES (sysdate);
现在表格有一行包含 22-AUG-14。
为什么是下面的WHERE子句false?
SELECT * FROM T
WHERE D = sysdate;
=> 0 行
以下查询有效:
SELECT * FROM T
WHERE TO_CHAR(D, 'DD/MM/YYYY') = TO_CHAR(sysdate, 'DD/MM/YYYY');
=> 1 行
我想存在与时间相关的“精度损失”(类似于 double & int),但为什么可能呢?因为这两种类型都是 DATE。
【问题讨论】:
-
做一个
SELECT SYSDATE FROM DUAL,它会告诉你问题。 -
这是我尝试过的,但是 SQL Developer 的日期格式只有 DD-MON-RR,这就是我看不到时间的原因。
标签: sql oracle where-clause precision sysdate