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 日期格式的主要内容,如果未能解决你的问题,请参考以下文章