我有一个命令如下:
to_char(to_date('req_date','yyyy/mm/dd'),'yyyymmdd) > '20140401'; is success
但是当我将年份从 2014 年更改为 2015 年之后,有一个错误格式字符串。如下
to_char(to_date('req_date','yyyy/mm/dd'),'yyyymmdd) > '20150401';
我不知道这是错误。让我们为我修复。谢谢大家
to_char(to_date('req_date','yyyy/mm/dd'),'yyyymmdd)> '20140401';
-
'req_date'
不是日期,而是字符串。您不需要单引号,请按原样使用日期列。 -
切勿在 DATE 上使用 TO_DATE,它会将其隐式转换为字符串,然后使用特定于区域设置的 NLS 格式返回日期。在这里看到我的答案 https://stackoverflow.com/a/29559609/3989608
-
最重要的是,您正在比较两个字符串。您需要比较日期s。您需要保留日期,因为它是用于日期计算的。TO_CHAR用于显示,TO_DATE用于将字符串文本转换为 DATE。
因此,您需要将日期比较为:
req_date > to_date('20140401','YYYYMMDD')