如何将varchar转换为datetime并在TSQL中跳过无效的datetime

Cic*_*ami 5 sql-server datetime type-conversion

我在SQL Server中有一个数据库.我没有权限更改任何表,但我可以创建视图.

我有三varchar列以格式存储日期YYYYMMDD.我想创造一个日期,从转换的视图varchardatetime.

现在可能的情况是,我可以拥有空格NULL或字符,而不是此列中的日期-.

我们来看一下这个closedDate专栏.如果我使用CONVERT(datetime, closedDate, 112)

  1. 有效日期转换正确,

  2. 当空白空间将日期转换为时1900-01-01,

  3. 保留NULL,

  4. -导致一个转换错误:

将varchar数据类型转换为日期时间数据类型会导致超出范围的值.

我如何告诉函数转换日期,只要它具有有效的日期格式,并在所有其他情况下保留NULL或更好的空日期(或空格)?

rs.*_*rs. 15

试试这个

CASE WHEN ISDATE(closedDate) = 1 THEN CONVERT(datetime, closedDate, 112) 
     ELSE NULL END closedDate
Run Code Online (Sandbox Code Playgroud)