【问题标题】:compare datetime in oracle [duplicate]比较oracle中的日期时间[重复]
【发布时间】:2015-06-26 07:38:55
【问题描述】:

我有如下命令:

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';

我不知道这是错误。让我们为我解决。 谢谢大家

【问题讨论】:

  • 这些实际上不是你的命令,是吗?至少缺少一个引号,并且引用了req_date,因此它不是有效日期。请复制粘贴实际命令。
  • 永远不要在 DATE 上使用 TO_DATE,它会隐式地将其转换为字符串,然后使用特定于语言环境的 NLS 格式返回日期。看到这个stackoverflow.com/a/29559609/3989608

标签: oracle datetime compare


【解决方案1】:

to_char(to_date('req_date','yyyy/mm/dd'),'yyyymmdd) > '20140401';

  1. 'req_date' 不是日期,而是字符串。您不需要单引号,直接使用日期列。

  2. 切勿在 DATE 上使用 TO_DATE,它会隐式将其转换为字符串,然后使用特定于语言环境的 NLS 格式返回日期。在这里查看我的答案https://stackoverflow.com/a/29559609/3989608

  3. 最重要的是,您正在比较两个 STRINGS。您需要比较 DATE。您需要将日期保留为 DATE 计算。 TO_CHAR 用于显示,TO_DATE 用于将字符串文字转换为 DATE。

因此,您需要将日期比较为:

req_date > to_date('20140401','YYYYMMDD')

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多