文字列として渡される日時パラメータを受け取るストアド プロシージャがあります。このような:
手順:
CREATE PROCEDURE [dbo].[MyFancySP]
@MyStartDate datetime = NULL,
@MyEndDate datetime = NULL
AS
....
電話:
EXEC [dbo].[MyFancySP]
@MyStartDate = N'01/01/2012',
@MyEndDate = N'03/01/2012'
ストアド プロシージャは、ずっとこのように機能してきました。さて、ここが興味深い部分です。日付を 2012 年 3 月 27 日またはそれ以降に変更するとすぐに、次のエラーが表示されます。
日付が使用されるストアド プロシージャ内の唯一の場所は、where 句です。関係がある場合は、ここにもコピーします。
WHERE
((@MyStartDate IS NOT NULL AND @MyEndDate IS NOT NULL
AND d.SomeDate >= @MyStartDate AND d.SomeDate <= @MyEndDate)
OR @MyStartDate IS NULL AND @MyEndDate IS NULL)
3 月 27 日以降に範囲外の例外が発生する理由はありますか? ちなみに、これはSQL Server 2008 R2で実行されています。
ありがとう!