私が見つけたすべてを試しましたが(CAST
、CONVERT
、インポート時に変換してデフォルト言語設定をチェックしています)、VARCHAR
の値をDATETIME
に変換するための解決策が見つかりません。私はこのフィールドの変換を新しいテーブルに挿入したいのですが、そのカラムはDATETIME
として設定されています。CONVERTがVARCHARからDATETIMEに対応していません
私は実行すると:
SELECT CONVERT(VARCHAR, [first air date], 121)
FROM mytable
結果は罰金やエラーのない返されます。私が実行したときただし、:
INSERT INTO newtable
SELECT ID, column1, column2,
CONVERT(VARCHAR, [first air date], 121)
FROM mytable
私はこのエラーを取得する:
Msg 242, Level 16, State 3, Line 1
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.
は、なぜ私が(最初のクエリのように)の結果を取得していますが、それは別のテーブルに挿入していないのだろうか?
データは次のようになります: '2004-02-23 00:00:00.000'(ダッシュはベストプラクティスではありませんが、このフォーマットは他の同僚によって決定されているため、 。
.csv
でデータをインポートしていますが、この列はExcelで日付形式として設定されています。
訂正 私は今それがCONVERT(DATETIME、[最初の放送日]、121)であるはずです。しかし、これは現時点での実際の問題を解決するものではなく、VARCHARからDATETIMEに「範囲外」エラーなしで変換しています。
すばらしい答えをいただきありがとうございました!しかし、この提案されたクエリを実行すると、NULLの行だけが返されます。 NULL値はないはずですか? SELECT文を実行すると(変換されたデータをINSERTしようとしたときに、NULLをNULLとして表示します)、なぜ動作しませんか? – CShrad
これらの値は 'NULL'、SQL値、' 'NULL''は文字列ですか? –
実際のNULLではなく、文字列 – CShrad