DB2 VARCHAR_FORMAT使用时间戳而不是日期

时间:2015-02-03 15:04:06

标签: date db2

我想将Date列转换为DB2中的格式化字符串。这个SQL工作正常:

select varchar_format(current timestamp, 'YYYY-MM')
from sysibm.sysdummy1;

但是这个SQL给出了一个错误:

select varchar_format(current date, 'YYYY-MM')
from sysibm.sysdummy1;

错误是: [SQL0171]函数VARCHAR_FORMAT的参数1无效。

在第一个SQL中,VARCHAR_FORMAT的第一个arg是一个时间戳,这是有效的。在第二个SQL中,VARCHAR_FORMAT的第一个arg是一个日期,但它不起作用。

IBM doc暗示只有这一个函数VARCHAR_FORMAT(及其同义词TO_CHAR)。

我应该如何将DATE(不是TIMESTAMP)转换为字符串?或者,我是否必须先将DATE转换为TIMESTAMP,然后使用VARCHAR_FORMAT?

我正在运行DB2 7.1 for i Series。

更新:转换为TIMESTAMP_ISO有效。但它很难看:

select varchar_format(timestamp_iso(current date), 'YYYY-MM')
from sysibm.sysdummy1;

那个有效。

1 个答案:

答案 0 :(得分:1)

DB2 for i中VARCHAR_FORMAT函数的文档仅提及TIMESTAMP值,而不是DATE。当语句调用TIMESTAMP-only函数或将DATE与TIMESTAMP进行比较时,某些DB2平台会隐式地将DATE值强制转换为TIMESTAMP,但不是全部都是。