web-dev-qa-db-ja.com

SQLServer-SQLを使用して日付範囲間の行を削除します。日付変換が失敗する

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
      BETWEEN '2014-02-31'  AND '2014-04-01'

これは私が書いたDELETEステートメントです。次のようなエラーがあります。

文字列から日付や時刻を変換するときに変換に失敗しました。

正しい日付形式を書かなければならないことは知っていますが、それがどうなるかはわかりません。

私が見た回答は日付形式を指定していなかったため、この質問は他の場所では回答されていません(私が求めているコンテキストで)

6
ObserveDBA

あなたは2月31日を書きました...多分.....その日付は存在しません。

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
BETWEEN '2014-02-28'  AND '2014-04-01'

変換日の一般的な考え方については、次のようになります。

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
BETWEEN CONVERT(date,'2014.02.28',102) and CONVERT(date,'2014.04.01',102)

ここで、CONVERThttps://msdn.Microsoft.com/en-us/library/ms187928.aspx の3番目のパラメーターの値の完全なリストを見つけることができます。

7
Galma88

SQL Serverを使用していると思いますが、これを試してください。

    DELETE FROM BIZ 
    WHERE CONVERT(DATE,[Orgnl_Cmpltn_Date])
    BETWEEN CONVERT(DATE,'2014-02-28') AND CONVERT(DATE,'2014-04-01')
2
japzdivino

代わりにこれを使用してください

DELETE FROM BIZ
WHERE [Orgnl_Cmpltn_Date] >= '2014-02-28'
AND [Orgnl_Cmpltn_Date] <= '2014'04'01'

これが重要かどうかはわかりませんが、2月は28日か29日しかありません。

2

いくつかのこと

1)2月31日などの日付はありません。これは問題になる可能性があります。

2)日付範囲を次の形式にすると、運が良くなる可能性があります。

BETWEEN '20140228'  AND '20140401'

乗り方を教えてください:-)

1
Stevie Gray

次のコードを使用できます。

DELETE from Tabel_Name WHERE Date BETWEEN CONVERT(datetime,'01/01/2001',103) and CONVERT(datetime,'31/12/2001',103)
0
Ajit