Date列中的空白值在运行SELECT语句时返回为1900/01/01

时间:2014-04-09 20:20:55

标签: sql sql-server date replace

列[PAYOFF DATE]有一些空白值和一些mm / dd / yy格式的值。

我必须更换' /'用' - '并将日期返回为yyyy-mm-dd。以下查询正在执行此操作。问题是,对于所有空白值,我得到结果为1900-01-01。

是否可以将1900-01-01替换为null并返回yyyy-mm-dd格式的其他有效日期值?

我正在使用SQL Server。

SELECT
cast(replace(a.[PAYOFF DATE],'/','-') as date) 
FROM MTG a

2 个答案:

答案 0 :(得分:6)

您不需要像在问题中显示的那样进行字符串操作。如果您有以mm/dd/yyyy格式存储的日期,则将其投放为日期。

SELECT cast(a.[PAYOFF DATE] AS DATE) 
FROM MTG a 

对于1900-01-01值,由于您要从字符串数据类型转换为Date,因此String数据类型可以具有空字符串但Date数据类型不能具有空日期值,它可以具有日期值或{{1}价值。

因此,在将空字符串转换为日期之前,需要将空字符串转换为空字符串。 1900-01-01只是sql server为您输入的默认值,因为Date数据类型不能为空值。

您可以通过执行此类操作来避免使用此sql server默认值。

NULL

答案 1 :(得分:0)

[付款日期] =''THEN NULL ELSE TRY_CONVERT(DATE,[付款日期])结束时的情况