sql - SQL ORA-01843 不是有效月份
问题描述
SQL> select Users.name , Users.surname , Users.email from Users 2 inner join Login_History on Login_History.user_id=Users.user_id where 3 Login_History.entry_date=TO_DATE('01/12/2020','dd/mm/yyyy'); Login_History.entry_date=TO_DATE('01/12/2020','dd/mm/yyyy') ERROR at line 3: ORA-01843: not a valid month
在第 3 行,我想得到 where 的结果Login_History.entry_date=01/12/20
;但是,它给出了无效的月份错误。
此代码在 SQL/Plus 中。
通过这种方式,我可以访问表中的一些数据。
解决方案
我建议将查询编写为:
select u.name, u.surname, u.email
from Users u join
Login_History lh
on lh.user_id = u.user_id
where lh.entry_date = date '2020-12-01';
请注意表别名的使用以及如何定义日期常量。
以上假设entry_date
实际存储为date
. 如果不是,您应该修复数据模型。 毕竟,日期应该存储为date
s,而不是字符串。
如果它不是日期,而是 format 中的字符串dd/mm/yyyy
,那么您可以简单地进行相等比较:
where lh.entry_date = '01/12/2020'
这适用于相等性,但不适用于大多数范围——因为字符串是存储日期的错误方式。
推荐阅读
- javascript - 如何在现有的 node.js express 设置中集成 rate-limiter-flexible?
- nix - 通过 Docker 构建时,如何缓存 nix 派生的依赖项?
- android - 为什么 Android Studio 抱怨 getApplicationContext()?
- javascript - 将回调函数结果附加到特定的 div/位置?
- python-3.x - 根据所需的季度将值替换为 nan
- excel - 无法创建输出每月出现次数的表
- javascript - TS/JS 混合和 Visual Studio 代码的错误导入错误
- c# - C# - 有条件地加载带有 switch 语句的特定页脚
- javascript - YouTube webhook 订阅请求返回“hub.mode 的值无效”?
- tensorflow - 可变通道数