我想将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;
那个有效。
答案 0 :(得分:1)
DB2 for i中VARCHAR_FORMAT
函数的文档仅提及TIMESTAMP值,而不是DATE。当语句调用TIMESTAMP-only函数或将DATE与TIMESTAMP进行比较时,某些DB2平台会隐式地将DATE值强制转换为TIMESTAMP,但不是全部都是。