我正在使用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。
答案 0 :(得分:0)
TIMESTAMP_FORMAT
(适用于z / OS的Db2)在此处记录
请注意,HH
与HH12
相同,而不是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)
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