使用join时日期转换出错

时间:2017-03-14 19:40:40

标签: sql sql-server date type-conversion

这是我的查询效果很好:

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

1 个答案:

答案 0 :(得分:0)

您的加入很可能在日期字段中添加空记录。在select查询中添加一个null处理程序,以便在日期因连接而为null时提供日期。

相关问题