我在SQL Server中有一个数据库。我没有权限更改任何表,但我可以创建视图。
我有三个varchar
列,以YYYYMMDD
格式存储日期。我想创建一个视图,其中日期从varchar
转换为datetime
。
现在可能的情况是,我可以使用空格NULL
或字符-
代替此列中的日期。
我们来看closedDate
列。如果我使用CONVERT(datetime, closedDate, 112)
有效日期转换正确,
如果有空格,则日期转换为1900-01-01
,
保留NULL,
-
导致转换错误:
导致将varchar数据类型转换为日期时间数据类型 在超出范围的值。
我如何告诉函数转换日期,只要它具有有效的日期格式,并在所有其他情况下保留NULL或更好的空日期(或空格)?
答案 0 :(得分:15)
试试这个
CASE WHEN ISDATE(closedDate) = 1 THEN CONVERT(datetime, closedDate, 112)
ELSE NULL END closedDate
答案 1 :(得分:0)
Use below code
SELECT CASE WHEN ISDATE(datecolumn)=1 THEN CONVERT(datetime, datecolumn, 103 )
ELSE null END
FROM tablename
use below for empty data
SELECT CASE WHEN ISDATE(datecolumn)=1 THEN CONVERT(datetime, datecolumn, 103 )
ELSE '' END
FROM tablename