gpt4 book ai didi

sql - Oracle sysdate 不等于存储日期

转载 作者:行者123 更新时间:2023-12-05 00:41:36 28 4
gpt4 key购买 nike

数据库:Oracle

简化版:

T有一列:D(DATE类型)

现在 table 是空的。

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。

最佳答案

sysdate 也包含时间,因此此查询将始终无法返回任何行,因为时间会不断变化

SELECT * FROM T
WHERE D = sysdate;

试试这个

SELECT * FROM T
WHERE trunc(D) = trunc(sysdate);

关于sql - Oracle sysdate 不等于存储日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25450486/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com