DB2日期格式更改的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DB2日期格式更改的方法相关的知识,希望对你有一定的参考价值。
参考技术ADB2日期格式更改的方法
在现存的数据库厂商当中,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日期格式更改的方法的主要内容,如果未能解决你的问题,请参考以下文章