我有一个SP,它需要计算一些日期&时间。当语言设置为英语时,它工作正常。然而,当它是法语的时候,它有这个错误:使用法语时DATEADD错误?
La conversion d'un type dedonnéesvarchar en type dedonnéesdatetime acrééune valeur hors limites。
这意味着基于翻译的日期时间溢出。
查询类似于:
SET LANGUAGE 'French'
DECLARE @StartPastDays INT
SET @StartPastDays = 1;
DECLARE @PastDays INT
SET @PastDays = 30;
PRINT CONVERT(VARCHAR(10),GETDATE(),111)
PRINT CONVERT(DATE,GETDATE(),111)
PRINT DATEADD(day, -(@[email protected]), CONVERT(VARCHAR(10),GETDATE(),111))
PRINT DATEADD(day, -(@[email protected]), CAST('2013-07-23' AS DATE))
如果我运行它,结果是:
乐paramètre德索绪尔EST过时à的问题。
2013年7月23日
2013年7月23日
消息242,级别16,状态3,行16 拉转换科特迪瓦联合国型号德最近搜索VARCHAR类型的连接德最近搜索DATETIME一个CREE无价的限制。
2013年6月23日
错误发生在: PRINT DATEADD(天, - (@ PastDays + @ StartPastDays-1),CONVERT(VARCHAR(10),GETDATE(),111))
任何人都知道为什么?
亲爱的,你为什么在VARCHAR转换(10)你GETDATE时DATEADD想要的datetime/smalldatetime的作为第三个参数? –
作为字符串处理日期(时间)几乎总是这种错误的来源。如果你想从日期时间中删除时间部分,有很多解决方案不需要转换到'varchar'。 –