DB2 日期格式

Posted

技术标签:

【中文标题】DB2 日期格式【英文标题】:DB2 Date format 【发布时间】:2012-05-06 10:44:50 【问题描述】:

我只想在 DB2 中将当前日期格式化为yyyymmdd

我看到了可用的日期格式,但我该如何使用它们?

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z10.doc.intro%2Fsrc%2Ftpc%2Fdb2z_datetimetimestamp.htm

SELECT CURDATE() FROM SYSIBM.SYSDUMMY1;

我没有看到任何直接使用上述格式的方法。

有什么建议吗?

【问题讨论】:

【参考方案1】:
SELECT VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD')
FROM SYSIBM.SYSDUMMY1

应该适用于大型机和 Linux/Unix/Windows DB2。 Info Center entry for VARCHAR_FORMAT().

【讨论】:

那行得通。谢谢..你能告诉我如何从上述日期开始计算天数.................................................. ...................... 像 CURDATE() - ( 3 天 ) 看起来你已经拥有它了。 :) CURRENT TIMESTAMP - 3 DAY 请记住,转换后的结果可能会在值的右侧包含空格,具体取决于 db2 版本。列结果将是 255 长。【参考方案2】:
select to_char(current date, 'yyyymmdd') from sysibm.sysdummy1

结果:20160510

【讨论】:

查询不工作。它返回: SQL0440N 未找到具有兼容参数的“FUNCTION”类型的名为“TO_CHAR”的授权例程。 SQLSTATE=42884 在这里工作 - 对我来说最短和最好的解决方案。引自 DB2 文档:TO_CHAR 标量函数是 VARCHAR_FORMAT 标量函数的同义词。【参考方案3】:

另一种解决方案 REPLACE (CHAR(current date, ISO),'-','')

【讨论】:

【参考方案4】:

当前日期为yyyy-mm-dd 格式。您可以使用substring函数将其转换为yyyymmdd格式:

select substr(current date,1,4)||substr(current date,6,2)||substr(currentdate,9,2)

【讨论】:

【参考方案5】:

这并不简单,但是

SELECT CHAR(CURRENT DATE, ISO) FROM SYSIBM.SYSDUMMY1

以 yyyy-mm-dd 格式返回当前日期。您必须对结果进行子串化并连接才能获得 yyyymmdd。

SELECT SUBSTR(CHAR(CURRENT DATE, ISO), 1, 4) ||
    SUBSTR(CHAR(CURRENT DATE, ISO), 6, 2) ||
    SUBSTR(CHAR(CURRENT DATE, ISO), 9, 2)
FROM SYSIBM.SYSDUMMY1

【讨论】:

谢谢 .. 但这是唯一的方法吗?那么格式有什么用.... DATE_K YYYYMMDD ?? 我无法让 ALTDATE 函数在我的 DB2 上工作。我在答案中发布的内容有效。

以上是关于DB2 日期格式的主要内容,如果未能解决你的问题,请参考以下文章

DB2日期格式

日期格式:DB2 _ SQL

在 db2 中将字符串日期(yyyy/mm/dd)转换为日期格式

将 JDE 日期格式转换为 DB2

将 db2 数据库中的浮点值转换为日期格式?

时间戳转为日期格式