2017-09-29 13 views
0

私は自社の古いMySqlデータベースからデータの行を収集し、新しいSQLに行をプッシュするためのクイックコンソールプログラムを作成していますデータベース。最初の300かそこらの行は罰金だったが、突然のすべては、私がvarcharデータ型をdatetimeデータ型に変換すると、範囲外の値が返される

範囲外の値になったdatetimeデータ型にvarcharデータ型の変換を取得しています。

私は選択したときに変換に何も問題はないように見えますが、私の現在の時刻を変換する方法はいくつかありました。

IE:

DECLARE @INPUT varchar(30) = '09/25/2010 04:55:47'; 
SELECT CONVERT(datetime, @INPUT, 101);` 

出力2010-09-25 04:55:47.000

DECLARE @INPUT varchar(30) = '09/25/2010 04:55:47'; 
INSERT INTO TABLE(A_BUNCH_OF_OTHER_COLUMNS, DATETIME_COLUMN, MORE_COLUMNS) 
      VALUES (A_BUNCH_OF_OTHER_VALUES, CONVERT(datetime, @INPUT, 101), MORE_VALUES);` 

私は、これが動作していないという理由はないし、私の同僚のいくつかを尋ねた後、彼らはどちらかのSQLで間違って何も見えません。

は、変換エラーが唯一のフルSQLのINSERTにまで見せています。

EDIT:実際のステートメントを反映するようにINSERTを修正しました。

+0

を実行する時間を操作している3つの他の日時フィールドがあります。 '@ DT'とは何ですか? 'A_BUNCH_OF_OTHER_COLUMNS'は何ですか? 'A_BUNCH_OF_OTHER_VALUES' DateTimes?そうであれば、変換の問題が発生する可能性があります。 –

+1

あなたはそこに無効な日付があるからです。すべての日付をvarcharsとして転送し、 'select * from MuhDateTest where isdate(muhdate)= 0' – Will

答えて

1
INSERT INTO TABLE(A_BUNCH_OF_OTHER_COLUMNS, CONVERT(datetime, @INPUT, 101), MORE_COLUMNS) 

この部分では、値を挿入する表の列を指定する必要があります。列ではないCONVERTメソッドを指定しました。

0

これがSQL Serverの場合は、タグを追加してください。 @DTとは何ですか?すべてのA_BUNCH_OF_OTHER_COLUMNS | A_BUNCH_OF_OTHER_VALUES日時?そうであれば、変換の問題が発生する可能性があります。 - 私の問題だったアレックス・K.

厥、このタグを追加してくださいSQL Serverのであれば24時間かけて

関連する問題