【发布时间】:2020-10-04 08:01:42
【问题描述】:
将 DATE 字段更改为 DT 以避免混淆 使用完整查询编辑问题以提高清晰度
SELECT
S1.NR AS "a",
S1.ZTV AS "b",
S1.RNR AS "c",
S1.TW AS "d",
S1.STV AS "e",
S1.RTV "f",
S1.DA AS "v",
CASE
WHEN S1.ZTV = '115' THEN 'T_RR'
ELSE ' '
END AS "DT",
' ' AS "SiT",
S1.S1JL AS "Ns",
S1.S1JM AS "Vs",
S1.S1JN AS "NSv",
S1.S1JO AS "VSf",
S1.S1JP AS "Vse",
S1.S1JQ AS "Vde",
S1.S1JR AS "Vds"
CASE WHEN S1.DT != '0001-01-01' THEN S1.DT
ELSE ' '
END as "SlDate"
FROM
XXXX S1
JOIN
YYYYY B
ON S1.STW = B.BCD
AND (
CASE
WHEN B1.BUSX != ' '
AND S1.S1TV = B1.BTX THEN 1
WHEN S1.S1TV = B1.B2TX THEN 1
ELSE 0
END) =1
如何在 DB2 中验证日期。我有一列,其中列值像'0001-01-01' 我有一个条件是仅在有效日期时才显示日期。
CASE WHEN S1.DT != '0001-01-01' THEN S1.DT ELSE ' ' END
执行查询时出现以下错误。这可能是什么问题?
执行查询时此条件失败。 SQL 状态:42815 供应商代码:-171 消息:[SQL0171] 函数 CASE 的参数 1 无效。原因 。 . . . . : 指定的函数 CASE 的参数 1 的数据类型、长度或值无效。恢复 。 . . : 参考 IBM i 信息中心数据库类别中的 DB2 for IBM i SQL 参考主题集合,以获取有关标量函数的更多信息。更正为函数指定的参数。再次尝试请求。
【问题讨论】:
-
如果问题是关于如何验证日期的字符串表示,请使用带有异常处理程序的 UDF。否则请提供完整代码的示例。
-
我已经发布了完整的查询。你能在这里帮忙吗
-
你在你提到的 CASE 表达式之前漏掉了一个逗号。按原样运行以下语句。
SELECT S1.DT , CASE WHEN S1.DT != '0001-01-01' THEN S1.DT ELSE ' ' END as "SlDate" FROM (VALUES '0001-01-01', '0001-01-02') S1 (DT)你有什么错误吗?
标签: sql date validation datetime db2