Sql 如何查找输入值不合适的记录
使用where子句对筛选出的大多数记录运行查询,我会得到一个结果 但在删除where子句后,出现以下错误: ORA-01847:月份的日期必须介于1和月份的最后一天之间 184700000-“月日必须介于1和月底之间 现在我想知道哪些记录在使用时具有不合适的输入值Sql 如何查找输入值不合适的记录,sql,database,oracle,date,Sql,Database,Oracle,Date,使用where子句对筛选出的大多数记录运行查询,我会得到一个结果 但在删除where子句后,出现以下错误: ORA-01847:月份的日期必须介于1和月份的最后一天之间 184700000-“月日必须介于1和月底之间 现在我想知道哪些记录在使用时具有不合适的输入值 nvl(to_date(trunc(vl.begin_date)),null) - nvl(to_date(trunc(v.end_date)),null) != 1 我搜索了null记录,但它们似乎不是问题所在 由于查询本身不是问
nvl(to_date(trunc(vl.begin_date)),null) - nvl(to_date(trunc(v.end_date)),null) != 1
我搜索了null
记录,但它们似乎不是问题所在
由于查询本身不是问题,而是查找有问题的记录,所以我没有添加完整的查询。您能提供示例数据吗?和数据类型吗?我假设日期不存储为日期,因为这是不可能的错误。@GordonLinoff,数据存储为时间戳。不能包含数据,因为我不知道是哪个records是有问题的。@AlexPoole Oracle Database 12c Standard Edition 12.1.0.2.0-64位生产PL/SQL 12.1.0.2.0-生产“CORE 12.1.0.2.0 Production”TNS for Linux:Version 12.1.0.2.0-生产NLSRTL Version 12.1.0.2.0-生产调用
to_date()
,对已经是日期的值调用(或时间戳)是错误的。它首先将时间戳转换为字符串,只是为了将该字符串转换回其开始的日期。请从语句中删除to_date()
调用。@davejal-它们没有问题;不必要的转换产生的问题实际上并不存在。(嗯,您可能有无效数据,但不太可能;它更可能与您的NLS设置有关。出于兴趣,您的会话NLS\u DATE\u格式设置为什么?)