我正在使用存储过程来检索日期列,并将结果显示在ASP.NET Web表单中。如果将数据作为空值插入数据库,结果将日期列显示为1900-01-01
。我需要将其显示为空值。
这是我的代码:
SELECT
*,
CASE
WHEN [DateField] = '1900-01-01' OR [DateField] IS NULL
THEN ''
END AS [DateField]
FROM
Table
WHERE
MemberID = @MemberID
DateField
列应返回一个空值,但仍显示日期1900-01-01
答案 0 :(得分:2)
CASE
表达式返回一个值,该值具有返回值的数据类型优先级(Data Type Precendence (Transact-SQL))。在case
中,您有2种数据类型; DateField
(我假设)是date
和''
,这是varchar(1)
。 date
的数据优先级比varchar
高,因此''
被隐式转换为date
。并且(您可以使用SELECT CAST('' AS date);
进行测试),因此返回值为1900-01-01
。
建议不要返回空字符串,而建议返回NULL
。否则,您必须将[DateField]
列转换为varchar
;那是个坏主意。通过将CASE
替换为:
NULLIF([DateField],'19000101')
答案 1 :(得分:0)
您可以使用NULLIF
:
SELECT col1, col2, ..., NULLIF([DateField] , '19000101') AS [DateField]
FROM Table_name
WHERE MemberID = @MemberID