【发布时间】:2019-06-26 14:25:33
【问题描述】:
我正在为 DB2 使用 IDAA。在某一时刻,我使用 TO_DATE 来转换一些日期并且它可以工作:
TO_DATE('09/03/2018 06:49:23','MM/DD/YYYY HH:MI:SS')
但是当我在时间戳中有一个以毫秒为单位的 VARCHAR 值时,TO_DATE 会返回错误。我在网上环顾四周,找到了一个说使用 TO_TIMESTAMP 但不起作用的答案:
TO_TIMESTAMP('09/03/2018 06:49:23.443000','MM/DD/YYYY HH:MI:SS.NNNNNN')
我已经查看了这里的每个答案并尝试了许多变体。我已经尝试了 TO_TIMESTAMP、TO_DATE、TIMESTAMP_FORMAT 和毫秒格式的每一种组合,如 FF、FF6、NNNNNN。我收到这些错误:
NO AUTHORIZED FUNCTION NAMED TO_TIMESTAMP HAVING COMPATIBLE ARGUMENTS WAS FOUND. SQLCODE=-440
SQL error: SQLCODE = -904, SQLSTATE = 57011, SQLERRMC = Invalid Date.. SQLCODE=-904
也许 IDAA 会有所不同?我不知道。
我正在使用 IBM Data Studio 4.1.3 运行 DB2 for z/OS V11。
【问题讨论】:
-
拨打
TO_TIMESTAMP('09/03/2018 06:49:23','MM/DD/YYYY HH:MI:SS')会发生什么?您仍然收到相同的错误消息吗?您能否包含出现对TO_TIMESTAMP的调用的完整 SQL 代码? -
它仍然无法将 TO_TIMESTAMP 识别为函数,但它适用于 TO_DATE。这是 SELECT 中唯一的代码行。
-
我的直觉是您的 DB2 安装存在某种问题。您的代码看起来应该可以工作,至少根据 IBM 的
TO_TIMESTAMP文档。 -
请编辑您的问题以指定 Db2 服务器平台(z/OS、i 系列、Linux/Unix/Windows)及其版本 + 修复包。
-
在 Db2 for z/OS 中没有
TO_TIMESTAMP函数。TO_DATE和TIMESTAMP_FORMAT都应该工作。可能是您的输入字符串中有其他空白字符而不是 ASCII 空格 (0x20)。