以下不起作用:
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN ''
ELSE Foo.Date
END
FROM BAR, ...
如果日期不是 01.01.1900(字段类型为 DateTime),我想返回日期。有没有可能这样做?
以下不起作用:
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, ...
SELECT ...,
CASE
WHEN CAST(Foo.Date AS DATE) = '01.01.1900' THEN ''
ELSE CAST(Foo.Date AS VARCHAR(25))
END AS Date
FROM BAR, ...
由于您的字段是 DATETIME,因此它的值将始终包含 TIME 部分,并且仅当时间部分为 0:00(午夜)时才等于确切日期。将其转换为 DATE 将删除时间部分,您可以进行比较。
同样在同一个 CASE 中返回 '' 和 date 会隐式地将您的空字符串转换为日期 - 再次是 01.01.1900,因此您需要在 CASE 的其他部分将 date 转换为 varchar,或者返回 NULL 而不是像 Adam 中的 ''普洛赫的例子。