我的查询抛出错误:
从字符串转换日期和/或时间时转换失败。
我是初学者,所以当您可以向我解释时会很好。
这是我的查询
SELECT
CASE
WHEN YEAR(STAN_LICZNIKA_DATA) = 2017 THEN 'AKTUALNE'
WHEN YEAR(STAN_LICZNIKA_DATA) < 2015 THEN KIEROWCA2_DATA
WHEN YEAR(STAN_LICZNIKA_DATA) = 2016 THEN KIEROWCA1_DATA
WHEN KIEROWCA1_DATA IS NULL THEN GETDATE()
WHEN STAN_LICZNIKA_DATA is NULL THEN 'TUTAJ BYŁA WARTOŚĆ PUSTA'
END
FROM
POJAZDY
答案 0 :(得分:5)
case
表达式返回result_expressions和可选的else_result_expression ref中的一组类型中优先级最高的单个类型。我的猜测是指定的两个字段不是字符串。如果没有,GETDATE()
将会丢弃所有内容。
字符串将转换为该类型。
因此,添加显式转换:
SELECT (CASE WHEN YEAR(STAN_LICZNIKA_DATA) = 2017 THEN 'AKTUALNE'
WHEN YEAR(STAN_LICZNIKA_DATA) < 2015 THEN CONVERT(NVARCHAR(4000), KIEROWCA2_DATA
WHEN YEAR(STAN_LICZNIKA_DATA) = 2016 THEN CONVERT(NVARCHAR(4000), KIEROWCA1_DATA
WHEN KIEROWCA1_DATA IS NULL THEN CONVERT(NVARCHAR(4000), GETDATE())
WHEN STAN_LICZNIKA_DATA is NULL THEN 'TUTAJ BYŁA WARTOŚĆ PUSTA'
END)
FROM POJAZDY