DB2中字符、數字和日期類型之間的轉換

DB2中字符、數字和日期類型之間的轉換

通常咱們在使用DB2或Oracle的過程當中,常常會在數字<->字符<->日期三種類 型之間作轉換,那麼在DB2和Oracle中,他們分別是如何實現的呢?在Oracle這幾個類型之間的轉換是十分方便的,經過 to_char|to_date|to_number函數便可完成類型轉換。本小節主要介紹DB2中的一些知識,從Oracle轉過來的DBA或開發人 員,能夠對比着學習 html

數字型到字符型的轉換 git

DB2中的col_a字段 express

字段類型 到字符類型的轉換
smallint char(col_a)
integer
bigint
double char(cast(col_a as decimal(8,2))))
decimal(8,2) Digits(col_a)

測試一下: 函數

SQL>create table test_datatypeSQL>(SQL>col_a smallint,SQL>col_b integer,SQL>col_c bigint,SQL>col_d decimal(8,2),SQL>col_e doubleSQL>);DB20000I SQL命令成功完成。 SQL>insert into test_datatype values(1,20,3000,4000.44,55555);DB20000I SQL命令成功完成。 SQL>describe select * from test_datatype
列信息 列數:5 SQL 類型 類型長度 列名 名稱長度 -------------------- ----------- ------------------------------ ----------- 501 SMALLINT 2 COL_A 5 497 INTEGER 4 COL_B 5 493 BIGINT 8 COL_C 5 485 DECIMAL 8, 2 COL_D 5 481 DOUBLE 8 COL_E 5 SQL>select * from test_datatype;COL_A COL_B COL_C COL_D COL_E ------ ----------- -------------------- ---------- ------------------------ 1 20 3000 4000.44 +5.55550000000000E+004 1 條記錄已選擇。 SQL>select char(col_a),char(col_b),char(col_c),digits(col_d),char(cast(col_e as decimal(8,2))) from test_datatype;1 2 3 4 5 ------ ----------- -------------------- -------- ---------- 1 20 3000 00400044 055555.00 1 條記錄已選擇。 SQL>select char(col_a)||','||char(col_b)||','||char(col_c)||','||digits(col_d)||','||char(cast(col_e as decimal(8,2))) from test_datatype;1 ----------------------------------------------------------- 1 ,20 ,3000 ,00400044,055555.00 1 條記錄已選擇。 SQL>

字符型到數字型的轉換 學習

DB2中的col_a字段 測試

字段類型 數字類型 轉換
char smallint Integer(trim(char(col_a)))
integer
bigint cast(char(col_a) as bigint)
decimal cast(col_a as decimal(8,2))
double cast(cast(char(cast(a.col_a as decimal(8,2))) as decimal(8,2)) as double)

測試一下 spa

SQL>create table test_datatypeSQL>(SQL>col_a char(2),SQL>col_b char(4),SQL>col_c char(10),SQL>col_d char(10),SQL>col_e char(10)SQL>);DB20000I SQL命令成功完成。 SQL>insert into test_datatype values('1','200','30000','4000.04','5000000');DB20000I SQL命令成功完成。 SQL>describe select * from test_datatype;列信息 列數:5 SQL 類型 類型長度 列名 名稱長度 -------------------- ----------- ------------------------------ ----------- 453 CHARACTER 2 COL_A 5 453 CHARACTER 4 COL_B 5 453 CHARACTER 10 COL_C 5 453 CHARACTER 10 COL_D 5 453 CHARACTER 10 COL_E 5 SQL>select Integer(trim(char(col_a))),SQL>Integer(trim(char(col_b))),SQL>cast(char(col_c) as bigint),SQL>cast(col_d as decimal(8,2)),SQL>cast(cast(char(cast(col_e as decimal(12,2))) as decimal(12,2)) as double)SQL>from test_datatype;1 2 3 4 5 ----------- ----------- -------------------- ---------- ------------------------ 1 200 30000 4000.04 +5.00000000000000E+006 1 條記錄已選擇。 SQL>

字符型到日期時間型的互換 code

DB2中的col_a字段 orm

字段類型 日期時間型

char htm

date(trim(char(col_a)))

timestamp(trim(char(col_a)))或to_date(--string-expression,format-string(DB2 9)

注:to_date實際是TIMESTAMP_FORMAT函數的一個同義詞
字段類型 字符類
date char(col_a)
time
timestamp char(col_a) 或 to_char(--timestamp-expression--,format-string--) (DB2 9)
注:to_char實際是VARCHAR_FORMAT函數的一個同義詞

測試一下看看

SQL>select date(trim(char('2009-09-01 '))),SQL>time(trim(char('12:23:34 '))),SQL>timestamp(trim(char('2009-02-26-14.28.40.234000'))) from sysibm.dual;1 2 3 ---------- -------- -------------------------- 2009-09-01 12:23:34 2009-02-26-14.28.40.234000 1 條記錄已選擇。 SQL>select char(current date),char(current time),char(current timestamp) from sysibm.dual;1 2 3 ---------- -------- -------------------------- 2009-02-26 14:28:40 2009-02-26-14.28.40.234000 1 條記錄已選擇。 SQL>select to_char(current timestamp,'yyyy-mm-dd hh24:mi:ss') from sysibm.dual;--DB2 9版本中新增 1 -------------------------- 2009-02-26 14:45:53 1 條記錄已選擇。 SQL>select to_date('2009-01-01 12:23:45','yyyy-mm-dd hh24:mi:ss') from sysibm.dual;--DB2 9版本中新增 1 -------------------------- 2009-01-01-12.23.45.000000 1 條記錄已選擇。 SQL>
相關文章
相關標籤/搜索