我有一個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'。 –