DB2 - 函数TRANSLATE的参数02无效

时间:2016-05-19 08:00:04

标签: date db2 ibm-midrange translate db2-400

我在使用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

你们其中一个人可以解释为什么这不起作用吗?感谢。

2 个答案:

答案 0 :(得分:3)

从DB2 for i手册...

  

到字符串
  一个字符串,指定特定的字符   表达式中的字符将被转换。有时这个字符串   称为输出转换表。该字符串必须是任何内置的   数字或字符串常量

所以它不会像你尝试使用它一样工作。

参数2必须是常数值。

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

select timestamp('20160101123059')
from sysibm.sysdummy1             

答案 1 :(得分:1)

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

如果你想要一个char来结果: 施放(TIMESTAMP_FORMAT('20160101123059','YYYYMMDDHH24MISS')作为varchar(50))