在oracle中trunc的使用方法:
1.TRUNC(for dates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函数的使用情况:
TRUNC(TO_DATE(’24-Nov-1999 08:00 pm’,’dd-mon-yyyy hh:mi am’))
=’24-Nov-1999 12:00:00 am’
TRUNC(TO_DATE(’24-Nov-1999 08:37 pm’,’dd-mon-yyyy hh:mi am’,’hh’)) =’24-Nov-1999 08:00:00 am’
trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
2.TRUNC(for number)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下
TRUNC(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
那么如何在db2中实现这种方法呢?
如:
用ROUND(2345.6789,2)得到的结果是:2345.6800,后面的两个0是没有意义的,若想将其截断,在Oracle中得到的结果应该是2345.68。
可以用
SQL> select trunc(2345.6789,2) from dual;
TRUNC(2345.6789,2)
------------------
2345.67
/home/db2inst > db2 -v "select decimal(2345.6789,10,2) from sysibm.sysdummy1"
select decimal(2345.6789,10,2) from sysibm.sysdummy1
1
------------
2345.67
1 record(s) selected.
分享到:
相关推荐
在 Oracle 中,可以使用 To_number(Integer()) 将字符型数据转化为数值型,而在 DB2 中可以使用 Decimal()。 四、系统日期 在 Oracle 中,系统日期可以使用 Sysdate 获取当前日期和时间,而在 DB2 中可以使用 ...
DB2与Oracle在这方面的实现略有不同: 1. **字符串类型转换** - **Oracle**: ```sql SELECT TO_CHAR(15.5000) FROM DUAL; ``` - **DB2**: ```sql SELECT CHAR(15.5000) FROM SYSIBM.SYSDUMMY1; ``` 2. **...
例如,Oracle的NUMBER在DB2中可能需要转化为DECIMAL,而VARCHAR2则可能需要转化为VARCHAR。 此外,两个系统在处理空值(NULL)和默认值方面也略有不同,这可能影响到数据迁移和查询编写。Oracle允许为列指定默认值...
decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) select round(123.456, 0) from dual; 返回123 select round(123.456, 1) from dual; 返回123.5 select round(-123.456, 2) from dual; 返回-123.46 2.ceil...
由于Oracle和DB2/400在数据类型的定义和实现上存在差异,因此在进行数据库迁移或跨平台开发时,了解这些差异至关重要。 #### 二、日期和时间类型 - **Oracle DATE**: 包含年、月、日、时、分、秒等信息。 - **DB2/...
- **二进制数据类型**:Oracle的`RAW`类型在DB2中没有直接对应,但可以通过`CHAR FOR BIT DATA`或`BLOB`类型来实现。 - **日期和时间类型**:Oracle的`DATE`类型在DB2中对应`TIMESTAMP`,但在处理日期和时间上有一些...
- `NUMBER(p)`在Oracle中表示精度p的数值,DB2则使用`DECIMAL(p,s)`、`DEC(p,s)`、`NUMERIC(p,s)`或`NUM(p,s)`,其中s为小数位数。 - Oracle的`FLOAT`、`REAL`和`DOUBLE PRECISION`对应DB2的`FLOAT`、`REAL`和`...
**注意:** Oracle提供了特殊的属性(如`%NOTFOUND`)来检查游标状态,而在DB2中,则需要使用`EXISTS`来实现类似的功能。 #### 四、集合 集合是用于存储多个元素的数据结构,常用于存储过程和函数中。 ##### 4.1 ...
Oracle中的NUMBER类型可以对应DB2/400中的多种类型,例如SMALLINT、INTEGER、BIGINT、DECIMAL等。具体的对应关系取决于Oracle中的NUMBER类型将用于保存什么类型的数据,是整型还是带有小数位的实型数据。此外,还要...
### DB2与Oracle数据库系统架构差异对比分析 #### 基本组件与术语 在讨论DB2与Oracle之前,我们先来了解这两种数据库管理系统的基本组件和术语。 **Oracle:** - **实例(Instance):** 包括SGA内存结构和后台...
Oracle 中的 NUMBER 类型可以对应 DB2 的 SMALLINT、INTEGER、BIGINT、DECIMAL(p,s) 和 FLOAT(n) 类型。其中,p 代表精度,s 代表 scale。NUMBER 类型的对应关系取决于 Oracle 中 NUMBER 类型的定义和所占用的存储...
- **Oracle** 和 **DB2** 都支持创建用户自定义函数,但在DB2中语法略有不同。 ```sql -- Oracle CREATE FUNCTION function_name(parameters) RETURN return_type IS -- DB2 CREATE FUNCTION function_name...
本文详细介绍了Python中`decimal`模块的类型转换功能及其使用方法。通过学习本文,你可以更好地理解如何在Python中处理高精度的数值计算任务,尤其是在金融计算和科学计算等领域中。掌握`decimal`模块的使用技巧将...
在数据库管理领域,DB2和Oracle是两款广泛使用的高性能关系型数据库管理系统。它们都提供了丰富的内置函数,以支持复杂的查询、数据处理和分析任务。本合集涵盖了DB2与Oracle的函数大全,旨在帮助数据库管理员和开发...
DB2和Oracle数据库表分区方法和数据库备份与恢复 DB2数据库表分区是指将大型表拆分为多个小的、独立的部分,每个部分称为一个分区。分区的目的是为了提高表的可管理性、可扩展性和查询性能。DB2数据库提供了 RANGE ...
- `DECIMAL(p,s)`在两个数据库中都是精确数值类型,可以使用`double`在C中表示,但要注意,DB2支持使用Packed BCD编码传递参数,以实现对`DECIMAL/NUMERIC`的精确表示。 - `INTEGER`在Oracle和DB2中都表示整数,C...
例如,Oracle中的“回滚段”没有在DB2中找到对应的组件,而DB2中的“容器”则没有在Oracle中出现。 ##### 2. 数据类型对比 - **Oracle**:支持CHAR(N)、NCHAR(N)、VARCHAR2(N)、NVARCHAR2(N)、NUMBER(P,S)、DATE、...
DB2支持与Oracle相似的数据类型,包括数值类型(NUMERIC、DECIMAL)、字符类型(CHAR、VARCHAR)以及日期时间类型(DATE、TIME)等。 ##### 3.3 隐式类型转换 DB2提供了隐式类型转换功能,使得在查询或数据操作过程中可以...
- **Number**:在Oracle中通常表示为`NUMBER`,而在DB2中可以使用`DECIMAL`或`NUMERIC`来近似模拟。 - **VARCHAR2**:Oracle中的`VARCHAR2`在DB2中对应为`VARCHAR`。 - **DATE**:Oracle使用`DATETIME`来表示日期...