【问题标题】:Oracle date format errororacle日期格式错误
【发布时间】:2012-09-04 01:46:47
【问题描述】:

我正在使用 oracle 表来提取数据。在其中一个查询中,我使用“where”在日期之间进行过滤。

To_Date(VDATU,'DD-MON-YYYY') >= '03-Jun-2012'
AND To_Date(VDATU,'dd-mon-yy') <= '04-Sep-2012'

我遇到了错误,

ORA-01861: literal does not match format string

我尝试使用 ('dd-mm-yy') 但它仍然给出相同的错误。可能有什么问题??

【问题讨论】:

  • 该错误可能是To_Date调用的结果,或者是字符串(例如'03-Jun-2012')到日期的隐式转换的结果。

标签: oracle date


【解决方案1】:

您正在尝试将VDATU(可能是VARCHAR2)转换为日期。

在一个地方你有DD-MON-YYYY,在另一个地方你有dd-mon-yy

是哪一个? VDATU 不能同时对两者都有效。

【讨论】:

  • 是的,它是 varchar2。它的格式为“01122011”。用于转换的正确格式是什么??
  • 您的示例不明确,但可能是“ddmmyyyy”(12 月 1 日)或“mmddyyyy”(1 月 12 日)。
【解决方案2】:

您将DATEString 进行比较,请改为尝试:

To_Date(VDATU,'DD-MON-YYYY') >= To_Date('03-JUN-2012','DD-MON-YYYY')
AND To_Date(VDATU,'dd-mon-yy') <= To_Date('04-SEP-2012','DD-MON-YYYY')

如果VDATU已经是一个日期,你不应该转换它to_date,你所要做的就是:

VDATU >= To_Date('03-JUN-2012','DD-MON-YYYY')
AND VDATU <= To_Date('04-SEP-2012','DD-MON-YYYY')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多