我有这段代码
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())
它给出了同样的错误,这让我相信它是在大于之后,但我仍然不知道为什么。
答案 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