我在使用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
你们其中一个人可以解释为什么这不起作用吗?感谢。
答案 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))