DB2日期格式更改的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DB2日期格式更改的方法相关的知识,希望对你有一定的参考价值。

参考技术A

DB2日期格式更改的方法

  在现存的数据库厂商当中,IBM DB2将继续保持领先地位,并且努力拉大与其它对手的差距。IBM公司长期在关系型数据库领域的持续投资,DB2中所使用的数据库专利技术比 Oracle, Microsoft, Sybase 三家公司拥有的专利总和还要多。下面我准备了关于DB2日期格式更改的方法,提供给大家参考!

  默认的\'DB2日期格式由数据库的数据库国家/地区代码(TERRITORY CODE)决定(数据库国家/地区代码是在数据库创建时确定的)。例如,在我的数据库时由数据库国家/地区代码US创建的,时间格式的输出如下:

  values current date

  1

  ----------

  05/30/2003

  1 record(s) selected.

  即时间格式为DD/MM/YYYY。如果希望修改格式,您需要使用不同的时间格式重新联编DB2工具包。支持的格式有:

  DEF 使用和数据库国家/地区代码相关的日期时间格式。

  EUR 使用IBM欧洲标准日期时间格式。

  ISO 使用ISO日期时间格式。

  JIS 使用日本工业标准日期时间格式。

  LOC 使用和数据库国家/地区代码结合的本地日期时间格式。

  USA 使用IBM美国标准时间日期格式。

  使用下面的步骤修改时间日期格式为ISO格式(YYYY-MM-DD):

  1. 在命令行下,更改到sqllib\\bnd目录。

  例如:

  在Windows平台: c:\\program files\\IBM\\sqllib\\bnd

  在UNIX平台 : /home/db2inst1/sqllib/bnd

  2.以SYSADM组成员的身份连接数据库:

  db2 connect to 数据库名

  db2 bind @db2ubind.lst datetime ISO blocking all grant public

  (您实际应用中,修改数据库名和期望的时间格式)

  上面工作完成后,您可以看到日期格式变更为:

  values current date

  1

  ----------

  2003-05-30

  1 record(s) selected.

;

DB2 日期格式

【中文标题】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 数据库中的浮点值转换为日期格式?