プロジェクトにDB2のTimestamp型について少し困ったところがあった。
勉強するため、調査結果以下です。
使用するDB2バージョンは V9.7
参照資料:
http://www.ibm.com/developerworks/jp/data/products/db2/pdf/db2v97_oracle01.pdf
ページ14
create table testtimestampseido(
a timestamp(0),
b timestamp(3),
c timestamp(6),
d timestamp(12),
e timestamp(16)
)
を実行すると
SQLを実行中です...
SQL実行中に以下のエラーが発生しました。
エラーコード:-604 [IBM][CLI Driver][DB2/NT64] SQL0604N 列の長さ、列の精度、列の桁数の属性、特殊タイプ、構造化タイプ、配列型、構造化タイプの属性、ルーチン、キャスト・ターゲット・タイプ、タイプ・マッピング、またはグローバル変数 "timestamp(16)" が無効です。 SQLSTATE=42611
SQLステータス:42611
create table testtimestampseido(
a timestamp(0),
b timestamp(3),
c timestamp(6),
d timestamp(12)
)
SQLを実行中です...
SQL応答時間 : 1.045000秒
処理が正常に終了しました。
insert into testtimestampseido values(current timestamp, current timestamp, current timestamp, current timestamp )
SQLを実行中です...
SQL応答時間 : 0.109000秒
1行が処理されました。
select * from testtimestampseido
A B C D
2011-07-20 10:21:29 2011-07-20 10:21:29.184 2011-07-20 10:21:29.184000 2011-07-20 10:21:29.184000000000
テーブルの定義を照会すると
select name,tbname,coltype,nulls,length,scale from SYSIBM.SYSCOLUMNS where tbname='TESTTIMESTAMPSEIDO'
NAME TBNAME COLTYPE NULLS LENGTH SCALE
A TESTTIMESTAMPSEIDO TIMESTMP Y 7 0
B TESTTIMESTAMPSEIDO TIMESTMP Y 9 3
C TESTTIMESTAMPSEIDO TIMESTMP Y 10 6
D TESTTIMESTAMPSEIDO TIMESTMP Y 13 12
長さはDB2自動的定義される。
しかし、CSEで長さを見ると、
長さは16桁になっていた。
結論:
1)Timestamp型を定義する時、Timestamp(16)はダメです。
2)精度の考慮が必要あるが、Timestampの長さは気にしなくてもいいです。
- 大小: 16.4 KB
分享到:
相关推荐
### DB2 日期功能使用详解 #### 一、获取当前日期与时间 DB2 提供了多种函数来获取系统当前的日期与时间信息。 - **`CURRENT_DATE`**:返回当前日期。 ```sql SELECT CURRENT_DATE FROM sysibm.sysdummy1; ```...
db2restore <dbname> historyfile usetsm takenat <timestamp> ``` 3. **增量恢复**:与增量备份相对应,用于恢复自上次完整备份后发生的变化。 ```sql db2restore <dbname> incremental usetsm takenat ...
### Oracle与DB2的主要区别 本文旨在探讨Oracle与DB2这两种主流关系型数据库管理系统(RDBMS)之间的关键差异。Oracle由甲骨文公司开发,而DB2则由IBM推出。两者均广泛应用于企业级环境,提供了强大的数据管理能力。...
- **日期时间类型**: DB2有`DATE`、`TIME`、`TIMESTAMP`等类型,而GreenPlum/PostgreSQL也有类似的数据类型支持。 对于每种数据类型,都需要仔细检查其长度限制、精度设置等方面,以确保在迁移后仍能正确处理数据。...
### DB2数据库中获取当前日期与时间的相关SQL语句 在DB2数据库系统中,处理日期和时间数据是一项常见的需求。对于开发人员来说,能够准确地获取和操作日期时间数据至关重要。本文将详细介绍如何在DB2数据库中使用...
### DB2 中日期和时间的基础使用 #### 一、引言 DB2 是 IBM 开发的一款功能强大的关系型数据库管理系统,被广泛应用于企业级数据管理领域。对于刚刚接触 DB2 的用户来说,理解和掌握日期与时间的操作是非常重要的,...
SELECT versionnumber, version_timestamp FROM sysibm.sysversions; ``` 2. 当前用户:可以使用以下SQL语句来获取当前用户信息: ```sql SELECT user FROM sysibm.sysdummy1; SELECT session_user FROM sysibm....
1. **数据类型与表结构**:DB2支持多种数据类型,包括数值型(如整数、浮点数)、字符串型(如VARCHAR、CHAR)、日期/时间型(如DATE、TIMESTAMP)等。创建表时,需要定义字段名、数据类型、长度和约束条件,如主键...
类型转换函数是指将一种数据类型转换为另一种数据类型的函数,DB2 为每种数据类型都提供了相应的函数,例如将 SMALLINT 转换为 INTEGER、将 DATE 转换为 TIMESTAMP 等。 三、数学函数 数学函数是指对数字进行运算...
**注意:** Oracle使用`SYSDATE`来获取当前日期时间,而DB2则使用`CURRENT_TIMESTAMP`来实现。 #### 十七、Set **Oracle:** ```sql SELECT DISTINCT col FROM table; ``` **DB2:** ```sql SELECT DISTINCT col ...
3. **日期时间**:在DB2中,日期和时间数据类型包括DATE、TIME、TIMESTAMP等,它们分别用于存储日期、时间以及日期和时间组合。DB2还提供了日期和时间函数,如CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP等,...
DB2还提供了一些内置的“专用存储器”,如CURRENT DATE、USER、CURRENT TIMESTAMP等,它们相当于SQL Server中的全局变量。 最后,文档列举了一些常用的DB2指令,如CREATE/DROP用于创建和删除对象,LIST/DESCRIBE...
在 Oracle 中,系统日期可以使用 Sysdate 获取当前日期和时间,而在 DB2 中可以使用 Current timestamp。 五、常用函数 在 Oracle 中,常用的函数有 Nvl、Coalesce、Value 等,而在 DB2 中也有相应的函数。 六、...
2. **数据类型**:介绍DB2支持的基本数据类型,如整型(INTEGER)、浮点型(FLOAT)、字符型(VARCHAR)、日期时间型(DATE, TIME, TIMESTAMP)等。 3. **查询优化**:如何利用EXPLAIN分析查询计划,以及如何通过...
db2 RESTORE DATABASE dbname FROM backup_path TAKEN AT timestamp TO new_storage_path REDIRECT ``` 例如,如果你的数据库名为`NB_DATA`,备份文件位于`E:\db_databack_up`,并且你想将表空间重定向恢复到`E:\...
- DB2支持多种数据类型,如数值类型(INTEGER、DECIMAL)、字符类型(VARCHAR、CHAR)、日期时间类型(DATE、TIMESTAMP)、二进制类型(BLOB、CLOB)等。 4. 索引: - 索引用于提高查询性能,DB2支持唯一索引、非...
2. 获取系统日期:Oracle的`sysdate`对应于DB2的`current timestamp`。 3. 空值处理:Oracle的`nvl`在DB2中用`value`函数实现。 4. 类型转换:Oracle通常使用`to_char()`,`to_date()`,`to_number()`等函数,而DB2...
**DB2**: 使用`CURRENT_TIMESTAMP`来获取当前的日期时间。 ```sql SELECT CURRENT_TIMESTAMP FROM SYSIBM.SYSDUMMY1; ``` #### 空值转换 **Oracle**: 使用`NVL`函数来进行空值转换。 ```sql SELECT productID, ...
- DB2:`SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1;` 3. 空值转换: - Oracle:`SELECT productid, loginname, NVL(cur_rate, '0') FROM TableName;` - DB2:`SELECT productid, loginname, COALESCE(cur...