sql - 如何比较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')
推荐阅读
- reactjs - 如何在 setState() 中使用三元表达式?
- python-3.x - 在 pandas 中使用 groupby.first() 替换空值
- linux - 如何编写一个 shell 脚本来传递 ssh-add 私钥的密码?
- vim - 无root权限安装vim
- android - 如何开发跨平台应用程序库
- sql - Oracle SQL 检查日期字段是否在一定范围内
- c++ - 如何实现 std::is_nothrow_constructible
- javascript - 如何使用javascript删除字符串中指定单词之后和句点之前的所有字符?
- javascript - 大型数字索引的 Object.keys 顺序?
- gradle - Gradle 找不到 com.github.johnrengelman.shadow