在SQL中将'NULL'转换为日期
问题描述:
我的表中有一个名为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
+0
@JibinBalachandran,这是代码处理的内容,因此NULLIF –
为什么你不设定日期列与今天的日期自动填充(或任何给定的日期),并只需要将行导入为null。然后将日期字段返回到正常日期,并导入其余的日期?也许不如有光泽,但比试图找到正确的解决方案更快? – junkfoodjunkie
你的代码应该可以工作。问题是什么? –
这是错误消息:从字符串转换日期和/或时间时转换失败。 – Sam