首页 > 解决方案 > 如何比较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

标签: sqloracledatecompare

解决方案


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

尝试截断它:

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

推荐阅读