【发布时间】:2017-08-05 07:50:03
【问题描述】:
这是我的查询,效果很好:
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
【问题讨论】:
-
你能分享表格架构和一些重现问题的示例数据吗?
-
您可以使用此链接查看查询结果:drive.google.com/open?id=0B6O9rKqbTANzLUV2QTlUODlkZ0U
-
我希望我能帮助你获得这些信息,但恐怕我不能。如果您有时间,并且由于您是 SO 新手(欢迎!),请查看 How to create a Minimal, Complete, and Verifiable example
-
什么是
INS_VW_Return?是VIEW吗? SQL Server 以以意想不到的顺序执行事物而闻名。 SQL 不是一种语言,您可以在其中告诉引擎执行此操作,而不是执行此操作,然后执行此操作... 它是一种 这就是我想要的,做任何需要的事情-语言。很可能在您的查询中您认为这是在 转换 之后执行的位置,但事实并非如此。请提供更多详细信息。 -
dd.effdate 的数据类型是什么?它是没有标点符号的日期的 INT 表示形式吗?
标签: sql sql-server date type-conversion