SQL在一台计算机上的日期转换错误,但代码适用于另一台计算机?

时间:2013-07-18 06:35:27

标签: sql-server tsql datetime

我有这段代码

Select * FROM [DB].[dbo].[STG_TABLE]
WHERE convert(datetime, cast([CHANGE_DATE] as char(8))) > DATEADD(DAY, -3, GETDATE())

CHANGE_DATE的类型为数字(8,0)。

之前我使用过此代码。它仍然可以在我的本地机器上使用相同的数据,但是当我在开发服务器上运行它时,它会出错:

  

从字符串转换日期和/或时间时转换失败。

两台计算机在“控制”面板中具有相同的系统日期设置。

如果我删除转换,就像这样:

Select * FROM [DB].[dbo].[STG_TABLE]
WHERE cast([CHANGE_DATE] as char(8)) > DATEADD(DAY, -3, GETDATE())

它给出了同样的错误,这让我相信它是在大于之后,但我仍然不知道为什么。

2 个答案:

答案 0 :(得分:5)

尝试其他转换。

Select * FROM [DB].[dbo].[STG_TABLE]
WHERE [CHANGE_DATE] >  cast(convert(char(8),DATEADD(DAY, -3, GETDATE()),112) as numeric(8,0))

GetDate() - > CHAR(8) - > NUMERIC然后与表字段

进行比较

答案 1 :(得分:1)

还尝试检查表格中的日期

SELECT [CHANGE_DATE]
from [DB].[dbo].[STG_TABLE]
where isdate(cast([CHANGE_DATE] as char(8)))=0