如何解决如何比较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 举报,一经查实,本站将立刻删除。