T-SQL:DateTme列varchar强制转换可能包含“ 1753-01-01”为空字符串

时间:2019-04-24 20:12:44

标签: tsql datetime type-conversion ssms sql-server-2014

任务:将可能包含DateTme的{​​{1}}列(以varchar形式显示)转换为空字符串。

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

例如,如果我使用:

1753-01-01

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

注意::似乎值“ 1753-01-01”确实出现在数据库表中;有时会在存在null的地方返回它。一个人甚至可以将日期设为yy并得到1753,因此从一般意义上讲它不是“ null”。

另请参见:
What is the significance of 1/1/1753 in SQL Server? 以获得该特定日期的背景。

另外,请参阅:{有关将日期时间转换为varchar的一般讨论}:

How to convert DateTime to VarChar

这是针对使用SSMS 14.0.17的Microsoft SQL Server 2014

1 个答案:

答案 0 :(得分:3)

使用replace()

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

db<>fiddle