日付と時刻を計算する必要がある SP があります。言語を英語に設定すると問題なく動作します。ただし、フランス語の場合、次のエラーが発生します。
La conversion d'un type de données varchar en type de données datetime a créé 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, -(@PastDays+@StartPastDays-1), CONVERT(VARCHAR(10),GETDATE(),111) )
PRINT DATEADD(day, -(@PastDays+@StartPastDays-1), CAST('2013-07-23' AS DATE))
実行すると、結果は次のようになります。
Le paramètre de langue est passé à Français.
2013/07/23
2013-07-23
Msg 242, Level 16, State 3, Line 16 La conversion d'un type de données varchar en type de données datetime a créé une valeur hors limites.
2013-06-23
エラーが発生する場所: PRINT DATEADD(day, -(@PastDays+@StartPastDays-1), CONVERT(VARCHAR(10),GETDATE(),111) )
誰でも理由を知っていますか?