[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。
SELECT cast(a.[PAYOFF DATE] AS DATE)
FROM MTG a
对于 1900-01-01
值,由于您要从字符串数据类型转换为日期,因此字符串数据类型可以有空字符串,但日期数据类型不能有空日期值,它可以有日期值或 NULL
值。
因此,在将空字符串转换为日期之前,您需要将其转换为 null。 1900-01-01 只是 sql server 为您输入的默认值,因为日期数据类型不能有空值。
您可以通过执行以下操作来避免使用此 sql server 默认值。
SELECT cast(NULLIF(a.[PAYOFF DATE],'') AS DATE)
FROM MTG a
关于sql - 运行 SELECT 语句时,日期列中的空白值返回为 1900/01/01,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973154/