2016-11-19 5 views
1

私のテーブルにstartdateという列があります。文字列形式です。ほとんどのフィールドは「NULL」です。この列を別のテーブルにコピーしていますが、そのデータ型は「日付」です。 SQLのすべての値を文字列から日付に変換するにはどうすればよいですか。 私はこのコードを試してみました:SQLで 'NULL'を日付に変換

INSERT INTO Destination_Table [new_date] 
SELECT CONVERT(DATE,[startdate],103) 
FROM Source_Table 
+1

または任意の日付)、そしてnullを持つ行をインポートするだけです。その後、日付フィールドを通常の日付に戻し、残りをインポートしますか?おそらく適切なソリューションを見つけようとするよりも光沢がありませんが、迅速です。 – junkfoodjunkie

+0

あなたのコードはうまくいくはずです。何が問題ですか? –

+0

これは、エラーメッセージです。文字列から日付および/または時刻を変換すると、変換に失敗しました。 – Sam

答えて

1

あなたはMSSQLを使用しているように見えます。あなたはMSSQL 2012を使用している場合は、次のコードは動作するはずです:

これは、 [startdate]の値をチェックするために IIF()メソッドを使用して、値がテキスト「NULL」であれば、その後、実際に返さない何
INSERT INTO Destination_Table [new_date] 
SELECT IIF([startdate] = "NULL", null, CONVERT(DATE,[startdate],103)) 
FROM Source_Table 

nullDestination_Tableでヌルを無効にしていない限り、ほとんどのフィールドで使用できる値です。 [new_date]フィールド。

日付フィールドは日付/時刻/日付&時間/(実際のヌル)情報のみを受け入れて保存することができるため、 "NULL"というテキストは無効です。 (I不明おりますが、MySQLがCONVERT()にPARAMとして変換コードを可能にする)のMySQL

INSERT INTO Destination_Table [new_date] 
SELECT IF([startdate] == 'NULL', null, CONVERT(DATE,[startdate],103)) 
FROM Source_Table 

等価である

1

NULLIF([STARTDATE]、 'NULL')復帰後

【STARTDATE]は 'NULL' に等しく、それはNULL(実際のNULLではなく、文字列 'NULL')

INSERT INTO Destination_Table [new_date] 
SELECT CONVERT(DATE,nullif([startdate],'NULL'),103) 
from Source_Table 

0123を返していない限り学習目的のために

、ここでは同じ結果といくつかの表現があります:あなただけ(今日の日付を自動入力するには日付列を設定しないのはなぜ

nullif(x,y) 

case when x=y then null else x end 

case x when y then null else x end 
+0

@JibinBalachandran、これはコードが扱うものなので、NULLIF –

関連する問題