这是我的查询效果很好:
select convert(date,convert(varchar,dd.effdate),111) kk
from INS_VW_Return dd --join MS_Account qq on (dd.accountno ='0'+qq.Class_Account)
where dd.accountno in (select '0'+t.Class_Account
from INS_Insurance_Status t
where t.Insurance_Status=0
)
and dd.importdate = cast(getdate() as date)
and dd.effdate<= cast(convert(VARCHAR(10),getdate(),112) as int)
但问题是,如果我取消注释MS_Account
,查询将返回以下错误:
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
如果我删除转换函数并放置一个字段(如dd.effdate)或再次注释掉MS_Account,它将无效。
我不知道为什么会发生这种情况,因为您可以看到在select语句和转换过程中没有与该表相关的内容。我需要提一下两个查询的count(*)是一样的。
您可以通过以下链接查看一些信息:
https://drive.google.com/open?id=0B6O9rKqbTANzVWJSbHVRWnRlVUk
https://drive.google.com/file/d/0B6O9rKqbTANzLUV2QTlUODlkZ0U/view
答案 0 :(得分:0)
您的加入很可能在日期字段中添加空记录。在select查询中添加一个null处理程序,以便在日期因连接而为null时提供日期。