我的表中有一個名爲startdate
的列。它是字符串格式。大部分字段都是'NULL'。我正在將此列複製到另一個數據類型爲「日期」的表中。 如何在SQL中將字符串中的所有值轉換爲日期。 我試過這段代碼:在SQL中將'NULL'轉換爲日期
INSERT INTO Destination_Table [new_date]
SELECT CONVERT(DATE,[startdate],103)
FROM Source_Table
我的表中有一個名爲startdate
的列。它是字符串格式。大部分字段都是'NULL'。我正在將此列複製到另一個數據類型爲「日期」的表中。 如何在SQL中將字符串中的所有值轉換爲日期。 我試過這段代碼:在SQL中將'NULL'轉換爲日期
INSERT INTO Destination_Table [new_date]
SELECT CONVERT(DATE,[startdate],103)
FROM Source_Table
看起來你正在使用MSSQL。如果使用的是MSSQL 2012,下面的代碼應該工作:
INSERT INTO Destination_Table [new_date]
SELECT IIF([startdate] = "NULL", null, CONVERT(DATE,[startdate],103))
FROM Source_Table
這裏做的事情,就是用IIF()
方法來檢查的[startdate]
的值,如果值是文字「NULL」,然後返回實際null
值可以在大多數字段中允許,除非您在Destination_Table
上禁用了null。 [new_date]
字段。由於日期字段只能接受並存儲日期/時間/日期&時間/(實際空值)信息,因此文本「NULL」無效。
以下是MySQL
INSERT INTO Destination_Table [new_date]
SELECT IF([startdate] == 'NULL', null, CONVERT(DATE,[startdate],103))
FROM Source_Table
等效(雖然我不確定MySQL允許轉換代碼作爲參數去CONVERT()
)
NULLIF([STARTDATE], 'NULL')返回[STARTDATE]除非它等於 'NULL',然後將其返回NULL(實NULL,不是字符串 'NULL')
INSERT INTO Destination_Table [new_date]
SELECT CONVERT(DATE,nullif([startdate],'NULL'),103)
from Source_Table
學習之用,這裏有一些表述相同的結果:
nullif(x,y)
case when x=y then null else x end
case x when y then null else x end
@JibinBalachandran,這是代碼處理的內容,因此NULLIF –
爲什麼你不設定日期列與今天的日期自動填充(或任何給定的日期),並只需要將行導入爲null。然後將日期字段返回到正常日期,並導入其餘的日期?也許不如有光澤,但比試圖找到正確的解決方案更快? – junkfoodjunkie
你的代碼應該可以工作。問題是什麼? –
這是錯誤消息:從字符串轉換日期和/或時間時轉換失敗。 – Sam