【发布时间】:2016-07-10 02:30:58
【问题描述】:
我在使用 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
你们中的哪一位能解释一下为什么这不起作用吗?谢谢。
【问题讨论】:
-
这当然不是将字符串 (yyyymmddhhiiss) 转换为日期,而是将 [数字] 字符串重新格式化为时间戳格式的字符串 [其中包括日期和时间]。如果效果应该是 TIMESTAMP 数据类型,那么请参阅“直接使用 TIMESTAMP()”的评论。否则:关于如何使用子字符串实现目标的评论,未显示表达式,尽管无论使用什么,都可能有更简单的方法;例如两个几乎相同的变体:
VARCHAR_FORMAT(d, 'YYYY-MM-DD HH:MI:SS')TO_CHAR(d, 'YYYY-MM-DD HH24:MI:SS')
标签: date db2 ibm-midrange translate db2-400