任务:将可能包含DateTme
的1753-01-01
列(强制转换为varchar)转换为空字符串。
在T-SQL中执行此操作的最有效方法是什么?
例如,如果我使用:
SELECT
LEFT(CONVERT(VARCHAR, DateCol1, 120), 10)
FROM
ourDatabase.dbo.ourTable
如何有效地将包含'1753-01-01'的任何行更改为空字符串?
注意:似乎值'1753-01-01'确实出现在数据库表中;它有时会返回有空值的地方。甚至可以做一个datepart 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
使用replace()
。
SELECT replace(left(convert(varchar, datecol1, 120), 10), '1753-01-01', '')
FROM ourtable;