【发布时间】:2017-04-01 18:50:05
【问题描述】:
请帮忙。我在这里犯了一个小错误,但即使在阅读了前面的问题后我也无法找到它。
SELECT TRUNC (SYSDATE) - TO_DATE (open_date_txt, 'yyyy-mm-dd') AS Days_open
FROM 'table'
WHERE TRUNC (SYSDATE) - TO_DATE (open_date_txt, 'yyyy-mm-dd') > 90 AND
TRUNC (SYSDATE) - TO_DATE (open_date_txt, 'yyyy-mm-dd') < 120
查询运行没有错误,但是当我从结果中选择所有数据时(通过执行 ctrl+A),我得到 ORA-1843: not a valid month。
NLS_DATE_FORMAT 是 DD-MON-RR NLS_DATE_LANGUAGE 是美国的
该表有 2 列,open_date_txt 字段在数据库中存储为 varchar2(10)。请看下文
Name open_date_txt
AA 2010-03-24
BB 2010-07-23
CC 2015-09-20
DD 1997-03-25
谢谢。
另外,我对不正确的数据模型感到震惊。此日期字段的值如 '0--' 、大于 12 的月份值以及大于 31 的天数。现在我想在选择期间忽略这些记录。我创建的存储过程不能正常工作,任何帮助将不胜感激。谢谢。
【问题讨论】:
-
我认为您需要向我们展示表格数据,或者至少是其中的代表性样本。
-
表格有2列,请看下面
-
不...不要在评论中发布数据。更新您的问题。
-
该表有2列,open_date_txt字段在数据库中存储为varchar2(10)。请看下面名称 open_date_txt AA 2010-03-24 BB 2010-07-23 CC 2015-09-20 DD 1997-03-25 谢谢。
-
顺便说一句:避免多次写出整个表达式的便捷方法是:
SELECT days_open FROM ( SELECT TRUNC (SYSDATE) - TO_DATE (open_date_txt, 'yyyy-mm-dd') AS days_open FROM 'table' ) WHERE days_open > 90 AND days_open < 120