微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何比较oracle数据库中的两个日期

如何解决如何比较oracle数据库中的两个日期

我正在尝试使用 sql 查询根据表中的日期从表中选择行: SELECT * FROM users WHERE date1 = TO_DATE('01/01/2020','MM/DD/YYYY')。出于某种原因,此查询仅适用于某些日期,但不适用于所有日期,我不知道为什么。显示日期时,格式看起来像“01/01/2020 12:00:00 AM”,但我尝试操纵 TO_DATE() 函数来考虑时间,但它仍然没有改变结果。任何帮助将不胜感激,如果有帮助,一些有效的日期是:“01/01/2001”和“01/01/2000”。

数据:

Does not Work

7/1/2000 12:00:00 AM | 7/31/2000 12:00:00 AM | 1
7/1/2000 12:00:00 AM | 7/31/2000 12:00:00 AM | 2
7/1/2000 12:00:00 AM | 7/31/2000 12:00:00 AM | 3
7/1/2000 12:00:00 AM | 7/31/2000 12:00:00 AM | 4
7/1/2000 12:00:00 AM | 7/31/2000 12:00:00 AM | 5
2/1/2000 12:00:00 AM | 2/31/2000 12:00:00 AM | 1
2/1/2000 12:00:00 AM | 2/31/2000 12:00:00 AM | 2
2/1/2000 12:00:00 AM | 2/31/2000 12:00:00 AM | 3
2/1/2000 12:00:00 AM | 2/31/2000 12:00:00 AM | 4
2/1/2000 12:00:00 AM | 2/31/2000 12:00:00 AM | 5

Works

1/1/2001 12:00:00 AM | 1/31/2001 12:00:00 AM | 1
1/1/2001 12:00:00 AM | 1/31/2001 12:00:00 AM | 2
1/1/2001 12:00:00 AM | 1/31/2001 12:00:00 AM | 3
1/1/2001 12:00:00 AM | 1/31/2001 12:00:00 AM | 4
1/1/2001 12:00:00 AM | 1/31/2001 12:00:00 AM | 5
1/1/2000 12:00:00 AM | 1/31/2000 12:00:00 AM | 1

解决方法

可能是因为 date1 列也包含时间分量。

尝试截断它:

where trunc(date1) = to_date('01/01/2020','mm/dd/yyyy')
,

如果您想从 DATE 列中选择 一天 的数据,该列可以包含一个 tiem 组件,请使用

SELECT * FROM users WHERE date1 >= DATE'2020-01-01' and date1 < DATE'2020-01-02'

使用 TRUNC 的细微差别在于您可以在适当的情况下使用索引访问

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。