[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
您不需要像问题中所示的那样进行字符串操作。如果日期以mm/dd/yyyy格式存储,则将其强制转换为DATE。
mm/dd/yyyy
SELECT cast(a.[PAYOFF DATE] AS DATE) FROM MTG a
对于1900-01-01值,由于您是从字符串数据类型转换为日期,因此字符串数据类型可以具有空字符串,但是日期数据类型不能具有空日期值,它可以具有日期值或NULL值。
1900-01-01
NULL
因此,您需要先将空字符串转换为null,然后再将其转换为日期。1900-01-01只是sql server为您输入的默认值,因为Date数据类型不能有空值。
您可以通过执行以下操作避免使用此sql server默认值。
SELECT cast(NULLIF(a.[PAYOFF DATE],'') AS DATE) FROM MTG a