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