T-SQL:将可能包含“1753-01-01”的日期时间列 varchar 强制转换为空字符串

T-SQL: DateTme Column varchar cast that may contain '1753-01-01' to empty string

任务:将可能包含 1753-01-01DateTme 列(转换为 varchar)转换为空字符串。

在 T-SQL 中最有效的方法是什么?

例如,如果我使用:

SELECT 
    LEFT(CONVERT(VARCHAR, DateCol1, 120), 10) 
FROM
    ourDatabase.dbo.ourTable

如何有效地将任何包含“1753-01-01”的行更改为空字符串?

注意: 值“1753-01-01”确实出现在数据库中 table;它有时会在有空值的地方返回。甚至可以执行 datepart yy 并得到 1753,因此它不是通常意义上的“null”。

另请参阅:
What is the significance of 1/1/1753 in SQL Server? 了解这个特定日期的背景。

另请参阅:{Datetime 到 varchar 转换的一般讨论}:

How to convert DateTime to VarChar

这适用于使用 SSMS 14.0.17

的 Microsoft SQL Server 2014

使用replace().

SELECT replace(left(convert(varchar, datecol1, 120), 10), '1753-01-01', '')
       FROM ourtable;

db<>fiddle