DB2 - 函数 TRANSLATE 的参数 02 无效

DB2 - Argument 02 of function TRANSLATE not valid

我在使用 TRANSLATE 将字符串 (yyyymmddhhiiss) 转换为日期时遇到一些问题。

如果我直接使用字符串那么它工作得很好,但是当我使用完全相同的数据类型 varchar(14) 的字段时,它会抛出标题中的错误。

这是我正在尝试做的一个基本示例:

WITH test_table AS (
    SELECT '20160101123059' AS d FROM SYSIBM.SYSDUMMY1
)
SELECT d
       , translate('ABCD-EF-GH IJ:KL:MN', d, 'ABCDEFGHIJKLMN')
       , translate('ABCD-EF-GH IJ:KL:MN', '20160101123059','ABCDEFGHIJKLMN')
  FROM test_table

你们谁能解释一下为什么这不起作用?谢谢

来自 DB2 for i 手册...

to-string
A string that specifies the characters to which certain characters in expression are to be converted. This string is sometimes called the output translation table. The string must be any built-in numeric or string constant.

所以它不会像您尝试使用的那样工作。

参数 2 必须是常数值。

假设支持 IBM i 版本,您应该能够使用 timestamp() 函数将 14 个字符的字符串直接转换为时间戳。

select timestamp('20160101123059')
from sysibm.sysdummy1             

你可以使用: TIMESTAMP_FORMAT('20160101123059' , 'YYYYMMDDHH24MISS')

如果你想要一个字符结果: cast(TIMESTAMP_FORMAT('20160101123059' , 'YYYYMMDDHH24MISS') as varchar(50))