T-SQL:DateTime列varchar强制转换,可能包含'1753-01-01'到空字符串

问题描述 投票:1回答:1

任务:将可能包含DateTme1753-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

tsql datetime type-conversion ssms sql-server-2014
1个回答
3
投票

使用replace()

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

db<>fiddle

© www.soinside.com 2019 - 2024. All rights reserved.