Ree*_*roi 5 sql sql-server replace date
列[PAYOFF DATE]有一些空白值和一些mm/dd/yy格式的值.
我必须用' - '替换'/'并将日期返回为yyyy-mm-dd.以下查询正在执行此操作.问题是,对于所有空白值,我得到结果为1900-01-01.
是否可以用null替换1900-01-01并返回yyyy-mm-dd格式的其他有效日期值?
我正在使用SQL Server.
SELECT
cast(replace(a.[PAYOFF DATE],'/','-') as date)
FROM MTG a
Run Code Online (Sandbox Code Playgroud)
您不需要像在问题中显示的那样进行字符串操作.如果您以mm/dd/yyyy格式存储日期,则将其转换为DATE.
SELECT cast(a.[PAYOFF DATE] AS DATE)
FROM MTG a
Run Code Online (Sandbox Code Playgroud)
对于1900-01-01值,由于您要从字符串数据类型转换为Date,因此String数据类型可以具有空字符串,但Date数据类型不能具有空日期值,它可以具有日期值或NULL值.
因此,在将空字符串转换为日期之前,需要将空字符串转换为空字符串.1900-01-01只是sql server为您输入的默认值,因为Date数据类型不能为空值.
你可以通过做这样的事情来避免这个sql server的默认值.
SELECT cast(NULLIF(a.[PAYOFF DATE],'') AS DATE)
FROM MTG a
Run Code Online (Sandbox Code Playgroud)