Tsql T-SQL:dateme列varchar cast,可能包含';1753-01-01';清空字符串

Tsql T-SQL:dateme列varchar cast,可能包含';1753-01-01';清空字符串,tsql,datetime,type-conversion,ssms,sql-server-2014,Tsql,Datetime,Type Conversion,Ssms,Sql Server 2014,任务:将可能包含1753-01-01的dateme列(强制转换为varchar)转换为空字符串 在T-SQL中最有效的方法是什么 例如,如果我使用: SELECT LEFT(CONVERT(VARCHAR, DateCol1, 120), 10) FROM ourDatabase.dbo.ourTable 如何有效地将包含“1753-01-01”的任何行更改为空字符串 注意:看起来值“1753-01-01”确实出现在数据库表中;它有时在有空值的地方返回。我们甚至可以做一个d

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

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

例如,如果我使用:

SELECT 
    LEFT(CONVERT(VARCHAR, DateCol1, 120), 10) 
FROM
    ourDatabase.dbo.ourTable
如何有效地将包含“1753-01-01”的任何行更改为空字符串

注意:看起来值“1753-01-01”确实出现在数据库表中;它有时在有空值的地方返回。我们甚至可以做一个datepartyy并得到1753,所以它在普通意义上不是“null”

另请参见:
有关此特定日期的背景信息

另外,请参见:{Datetime到varchar转换的一般性讨论}:

这适用于使用SSMS 14.0.17的Microsoft SQL Server 2014使用
replace()


您是否可以更新表格,将这些日期转换为空字符串,这样您的选择就不必进行任何转换?这是一个好主意,但这是不允许的。除此之外:当数据定义或变量声明语句中未指定n时,默认长度为1。如果在使用CAST和CONVERT函数时未指定n,则默认长度为30。“最佳做法是始终指定长度。“医生”命令的就是{I碰巧是一个PhD}。我会拼写替换为大写字母“R”,但这并不重要。(-:
SELECT replace(left(convert(varchar, datecol1, 120), 10), '1753-01-01', '')
       FROM ourtable;