DB2中字符、数字和日期类型之间的转换

一般我们在使用DB2或Oracle的过程中,经常会在数字<->字符<->日期三种类 型之间做转换,那么在DB2和Oracle中,他们分别是如何实现的呢?在Oracle这几个类型之间的转换是十分方便的,通过 to_char|to_date|to_number函数即可完成类型转换。本小节主要介绍DB2中的一些知识,从Oracle转过来的DBA或开发人 员,可以对比着学习

数字型到字符型的转换

DB2中的col_a字段

字段类型 到字符类型的转换
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)

测试一下

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>

字符型到日期时间型的互换

DB2中的col_a字段

字段类型 日期时间型

char

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>

DB2中字符、数字和日期类型之间的转换的更多相关文章

  1. JavaScript 中的数字和日期类型

    本章节介绍如何掌握Javascript里的数字和日期类型 数字EDIT 在 JavaScript 里面,数字都是双精度浮点类型的 double-precision 64-bit binary form ...

  2. C++string,char* 字符数组,int类型之间的转换

    string.int 常见类型之间相互转换 int & string 之间的转换 C++中更多的是使用流对象来实现类型转换 针对流对象 sstream实现 int,float 类型都可以实现 ...

  3. Swift数字类型之间的转换

    Swift数字类型之间的转换Swift是一种安全的语言,对于类型的检查非常严格,不同类型之间不能随便转换.一.整型之间的转换在C和Objective-C等其他语言中,整型之间有两种转换方法:从小范围数 ...

  4. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  5. java Data、String、Long三种日期类型之间的相互转换

    java Data.String.Long三种日期类型之间的相互转换      // date类型转换为String类型   // formatType格式为yyyy-MM-dd HH:mm:ss// ...

  6. 【opencv基础】opencv和dlib库中rectangle类型之间的转换

    前言 最近使用dlib库的同时也会用到opencv,特别是由于对dlib库的画图函数不熟悉,都想着转换到opencv进行show.本文介绍一下两种开源库中rectangle类型之间的转换. 类型说明 ...

  7. NSString / NSData / char* 类型之间的转换

    转自网络: NSString / NSData / char* 类型之间的转换 1. NSString转化为UNICODE String: (NSString*)fname = @“Test”; ch ...

  8. java中 列表,集合,数组之间的转换

    java中 列表,集合,数组之间的转换 java中 列表,集合,数组之间的转换 java中 列表,集合,数组之间的转换 List和Set都是接口,它们继承Collection(集合),集合里面任何数据 ...

  9. pytorch--基础类型之间的转换

    在pytorch自己定义张量并进行计算的时候,往往会因为类型不匹配而报错,这里稍微记下pytorch之间的类型转换: 对tensor基础类型进行转换:比如说int().float().long().d ...

随机推荐

  1. java类中定义接口

    今天看到一个java类中定义了接口,写个备忘录,记录一下 package com.gxf.test; public class Test_interface { public interface sh ...

  2. Microsoft Dynamics CRM 2013 安装过程图解及安装序列号

    Microsoft Dynamics CRM 2013 安装过程 图解   在安装前,先持一下SQL配置管理,将相关的服务打开.(由于在虚拟机里,许多服务需要时才会打开,像Reporting Serv ...

  3. maven安装报错

    今天在安装maven时安照说明配置环境变量,通过命令检查: mvn -v 竟然出现以下错误,很郁闷的是我明明配置了JAVA_HOME,并且别的依赖java的东西都能用,通过java -version也 ...

  4. Liferay IDE 3.1 M1发布啦

    很嗨森,以后就再也不用SDK和下载.ivy啦 新增功能主要有: 1.Liferay Workspace(用来存放Liferay Module项目) 2. Liferay Gradle Module P ...

  5. linux打包压缩命令汇总

    tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令 ...

  6. 【笔记】ASP.NET MVC Model元数据

    问题1:什么叫Model元数据? Model元数据,是针对数据类型的一种描述信息.由于复杂类型(或者说类型嵌套的存在,比如CustomerModel中有一个属性为复杂类型Address)的存在,因此M ...

  7. MySQL用程序代码建表(1)

    一.创建表格代码格式 create table <表名>( <列名> <数据类型及长度> [not null], <列名> <数据类型及长度> ...

  8. 【BZOJ】【1061】【NOI2008】志愿者招募

    网络流/费用流 OrzOrzOrz,这题太神了不会捉. 题解:https://www.byvoid.com/blog/noi-2008-employee/ 这道题正确的解法是构造网络,求网络最小费用最 ...

  9. Codeforces Round #277 (Div. 2)

    整理上次写的题目: A: For a positive integer n let's define a function f: f(n) =  - 1 + 2 - 3 + .. + ( - 1)nn ...

  10. HTML5 canvas 绘图步骤

    1.先把canvas选出来,不选出来你往哪儿画! var oCan=  document.getElementById('xxx'); 2.声明基于 canvas 的context对象,没他你怎么调用 ...