特定の日付範囲の値を選択するためにクエリをフィルタリングしようとしています。私のオリジナルの述語がいた:私はこれをしなかった場合はT-SQLは、2つのvarcharsを日付に変換するときにのみエラーメッセージをスローする
WHERE [TheDate] BETWEEN '2016-07-01' AND '2017-06-31'
、私はエラーメッセージが表示されました、「datetimeデータ型にvarcharデータ型の変換は、範囲外の値になりました。」私はその文の複数のバリエーションを試みた:
WHERE [TheDate] BETWEEN CONVERT(datetime, '2016-7-1 00:00:00.000', 103)
AND CONVERT(datetime, '2017-6-31 00:00:00.000', 103)
WHERE [TheDate] BETWEEN CONVERT(date, '2016-7-1', 103)
AND CONVERT(date, '2017-6-31', 103)
WHERE [TheDate] BETWEEN CONVERT(date, '2016-7-1', 101)
AND CONVERT(date, '2017-6-31', 101)
WHERE [TheDate] BETWEEN CAST('2016-7-1' AS date)
AND CAST('2017-6-31' AS date)
をしかし、一人一人が私に同じエラーメッセージを与えました。
WHERE [TheDate] > CAST('2016-7-1' AS date)
そしてプレスト - それが働いた:
はその後、ちょうどそれを一体のために、私はこれを試してみました。だから私はこれを試しました:WHERE [TheDate] > CAST('2016-7-1' AS date)
AND [TheDate] < CAST('2017-6-31' AS date)
もう一度エラーメッセージが表示されます。私は複数のバリエーションを試して続けたが、結論はこれです:
私は
date
またはdatetime
に変換するために2つのvarchar
列にCAST
またはCONVERT
を使用している場合は、私は関係なく、私の構文の、エラーメッセージが表示されます、機能選択は、など私は
date
またはdatetime
に変換する1つのvarchar
列にCAST
またはCONVERT
を使用している場合、変換は問題なく動作します
これを引き起こす可能性のあるアイデアは誰にもありますか?
ありがとうございました。
'June 31'は有効な日付ではありません。 – Siyual