DB2 / IDAA:如何正确地将VARCHAR格式化为TIMESTAMP(以毫秒为单位)

时间:2019-06-26 14:25:33

标签: database db2 db2-zos

我正在使用IDAA for DB2。有一次,我使用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。

2 个答案:

答案 0 :(得分:0)

TIMESTAMP_FORMAT(适用于z / OS的Db2)在此处记录

https://www.ibm.com/support/knowledgecenter/en/SSEPEK_12.0.0/sqlref/src/tpc/db2z_bif_timestampformat.html

请注意,HHHH12相同,而不是HH24,因此可能是您需要的,例如

$ db2 "values TIMESTAMP_FORMAT('09/03/2018 16:49:23','MM/DD/YYYY HH24:MI:SS')"

1                         
--------------------------
2018-09-03-16.49.23.000000

  1 record(s) selected.

(以上内容来自Db2 LUW,但我认为该功能在z / OS /和DAA的Db2上是相同的)

答案 1 :(得分:0)

基于以下链接- https://www.ibm.com/support/knowledgecenter/en/SS4LQ8_4.1.0/com.ibm.datatools.aqt.doc/gui/concepts/c_idaa_inconsistencies.html

IBM Db2 Analytics Accelerator for z / OS不支持Db2支持的所有日期和时间格式。如果使用VARCHAR_FORMAT或TIMESTAMP_FORMAT标量函数,则对于加速和内部Db2查询可能会导致不同的结果。 IBM Db2 Analytics Accelerator for z / OS不支持以下格式:

FF[n] - fractional seconds (000000-999999)

The optional number n is used to specify the number of digits to include in the return value. Valid values for n are the integers from 1-6. The default is 6.
ID - ISO day of the week (1-7)

The value 1 represents Monday. The value 7 represents Sunday.
IYYY - ISO year (0000-9999)

The last four digits of the year based on the ISO week that is returned.
NNNNNN - microseconds (000000-999999)

This format is equivalent to FF6.
RR - last two digits of the year (00-99)
SSSSS - seconds since the previous midnight