0

このタイプの日時:2010-09-16 00:32:41.960'CreatedDate列のテーブルがあります。

クエリを実行する必要があります...ここで[CreatedDate]>='2010-09-16 00:32:41.960'ですが、それだけで

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

正しい構文は何ですか。前回SQLを実行してからしばらく経ちました。前もって感謝します。

4

2 に答える 2

3

SQL Serverが変換方法を推測する必要がないように、明確な日時形式を使用します。

where [CreatedDate] >= '2010-09-16T00:32:41.960'

地域の設定によっては、(ではなくT)スペースセパレータを使用してフォームをと解釈する場合があるのは残念ですYYYY-DD-MM hh:mm:ss。これはあなたの例で範囲外の月を与えます(そして日=月の場合を除いて、月の初めの日付の間違った結果)

私は通常、安全なフォーマットを次のようにリストします。

  • YYYYMMDD
  • YYYY-MM-DD'T'hh:mm:ss
  • YYYY-MM-DD'T'hh:mm:ss.mil

datetime2またはに変換すると安全になったフォーマットは他にもいくつかありますがdate、覚えていません。通常は上記で十分です。


もう1つの方法は、set dateformat次の日付リテラルを使用する前にステートメントを実行することです。

set dateformat mdy
select MONTH('2010-09-16 00:32:41.960')

結果として与え9ますが、あなたが経験していることは次のように再現することができます:

set dateformat dmy
select MONTH('2010-09-16 00:32:41.960')
于 2012-09-10T12:50:47.040 に答える
0

試す:

where [CreatedDate] >= CONVERT(datetime,'2010-09-16 00:32:41.960');
于 2012-09-10T12:50:45.613 に答える