SQL大小写:返回大小写值
以下操作不起作用:SQL大小写:返回大小写值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,以下操作不起作用: SELECT ..., CASE Foo.Date WHEN '01.01.1900' THEN '' ELSE Foo.Date END FROM BAR, ... 如果日期的值不是01.01.1900,我想返回日期字段类型是DateTime。 有这样做的可能性吗?如果将其转换为varchar不成问题,您可以执行以下操作: SELECT ..., CASE Foo.Date WHEN '01.01.1900
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN ''
ELSE Foo.Date
END
FROM BAR, ...
如果日期的值不是01.01.1900,我想返回日期字段类型是DateTime。
有这样做的可能性吗?如果将其转换为varchar不成问题,您可以执行以下操作:
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN ''
ELSE cast(Foo.Date as varchar(50))
END as Date
FROM BAR, ...
否则,如果必须保留日期,则需要使用NULL而不是空字符串:
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN null
ELSE Foo.Date
END as Date
FROM BAR, ...
试试这个
SELECT ...,
(CASE WHEN Foo.Date!='01.01.1900' THEN Foo.Date
END) as Date
FROM BAR, ...
由于您的字段是DATETIME,所以它的值将始终包含时间部分,并且仅当它的时间部分为0:00 midnight时才等于确切日期。将其转换为最新将删除时间部分,您可以对其进行比较
同样,在同一个案例中返回和date将隐式地将空字符串转换为date,即01.01.1900,因此在案例的其他部分,您需要将date转换为varchar,或者返回NULL,而不是像Adam Plocher的示例中那样 所以Foo.Date是一个DateTime字段?当'01.01.1900'为空时使用。它是一个DateTime,是的。
SELECT ...,
CASE
WHEN CAST(Foo.Date AS DATE) = '01.01.1900' THEN ''
ELSE CAST(Foo.Date AS VARCHAR(25))
END AS Date
FROM BAR, ...