oracle timestamp用法
我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_seconds_precision),可以是 0 to 9,缺省是6。
但是对date类型的运算很简单,有很多函数可用来处理;而两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒,
SQL> create table test (T1 TIMESTAMP(6),
2 T2 TIMESTAMP(6));
表已创建。
SQL> insert into test values(
2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),
3 to_timestamp('2006-01-01 12:20:10.2','yyyy-mm-dd hh24:mi:ss.ff'));
已创建 1 行。
SQL>
SQL> insert into test values(
2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),
3 to_timestamp('2006-01-02 12:20:10.2','yyyy-mm-dd hh24:mi:ss.ff'));
已创建 1 行。
SQL>
SQL> insert into test values(
2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),
3 to_timestamp('2006-01-02 13:40:20.2','yyyy-mm-dd hh24:mi:ss.ff'));
已创建 1 行。
SQL> commit;
提交完成。
SQL>
两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒:
SQL> select t2-t1 from test;
+000000000 00:10:00.100000
+000000001 00:10:00.100000
+000000001 01:30:10.100000
SQL>
但要简单地转化为某一个精度却比较麻烦,用类似date类型的处理方法是不行的。如转化为分:
SQL> select 1440*(t2-t1) from test;
+000000010 00:02:24.000000000
+000001450 00:02:24.000000000
+000001530 04:02:24.000000000
SQL>
发现结果根本不是原先想要的,而是在原先的“多少天+多少小时+多少分钟+多少秒+多少小数秒”的每一项都乘以1440再进行进制处理。
最容易理解的就是用substr将两个timestamp的差进行分割转化处理:
SQL> SELECT substr((t2-t1),instr((t2-t1),' ')+7,2) seconds,
2 substr((t2-t1),instr((t2-t1),' ')+4,2) minutes,
3 substr((t2-t1),instr((t2-t1),' ')+1,2) hours,
4 trunc(to_number(substr((t2-t1),1,instr(t2-t1,' ')))) days,
5 trunc(to_number(substr((t2-t1),1,instr(t2-t1,' ')))/7) weeks
6 FROM test;
SECO MINU HOUR DAYS WEEKS
---- ---- ---- ---------- ----------
00 10 00 0 0
00 10 00 1 0
10 30 01 1 0
或者利用自定义函数来实现将天数转换成“天时分秒”格式:
CREATE OR REPLACE FUNCTION F_DAYS2STR(P_DAYS IN NUMBER DEFAULT 0)
RETURN VARCHAR2 IS
--Ver:1.0
--Created by xsb on 2005-05-26
--For: 将天数转换成天时分秒格式
DAYS NUMBER := NVL(P_DAYS, 0);
VD NUMBER; --天
VH NUMBER; --小时
VM NUMBER; --分
VS NUMBER; --秒
RESULT VARCHAR2(100); --返回值
BEGIN
VD := TRUNC(DAYS);
VH := TRUNC((DAYS - VD) * 24);
VM := TRUNC((DAYS - VD - VH / 24) * 24 * 60);
VS := TRUNC((DAYS - VD - VH / 24 - VM / 24 / 60) * 24 * 60 * 60);
SELECT DECODE(VD, 0, '', VD || '天') || DECODE(VH, 0, '', VH || '小时') ||DECODE(VM, 0,'', VM || '分') || DECODE(VS, 0, '', VS || '秒') INTO RESULT FROM DUAL;
RETURN(RESULT);
END;
SQL>
如果最后结果的精度要求不高时(在分或分以上时),就可以先将timestamp转化为date再结算,这样就简单多了:
SQL> select (to_date(to_char(t2,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'
)-to_date(to_char(t1,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24*60
2 from test;
10
1450
1530.16667
date转换为timestamp:
SELECT CAST(sysdate AS TIMESTAMP) from dual;
分享到:
相关推荐
oracle timestamp详解 将常用的转换方法及使用注意事项都罗列出来了
在设置Oracle的Timestamp with Time Zone类型的值时,可以使用`setObject()`方法,传入`ZonedDateTime`对象。在从数据库查询结果获取Timestamp with Time Zone数据时,可以通过`ResultSet.getObject()`方法,然后...
在计算两个时间点之间的差值时,`TIMESTAMP`类型提供了一个更加直观和方便的方法。当两个`TIMESTAMP`值相减时,Oracle会直接返回一个以“天.小时:分钟:秒”格式表示的时间差,其中秒部分可能包含小数,这使得结果的...
根据提供的标题、描述、标签及部分内容,我们可以了解到这段文本主要涉及Oracle数据库中处理时间戳(`TIMESTAMP`)的相关...通过这些知识点,我们可以更深入地理解Oracle数据库中处理时间戳的具体方法及其应用场景。
在本文中,我们讨论了 Oracle 数据库中 TIMESTAMP 和 DATE 两个数据类型的特点、使用场景和优缺点。TIMESTAMP 数据类型比 DATE 数据类型更适合用于需要精确计算时间间隔的情况。同时,我们也提供了一些实际应用中的...
cx_Oracle 使用方法 cx_Oracle 是一个 Python 库,用于连接 Oracle 数据库。下面将详细讲解 cx_Oracle 的使用方法。 安装 cx_Oracle 在使用 cx_Oracle 之前,需要先安装它。可以使用 pip install cx_Oracle 进行...
本文将深入探讨`timestamp`的使用、转换以及与其他日期时间类型交互的方法。 1. **字符型转成timestamp** Oracle提供`to_timestamp`函数将字符串转换为`timestamp`类型。在示例中,格式模式 `'dd-MON-yy hh:mi:ss....
在使用或编译时也会出现这个错误, 解决方法也是把{$I _TrialIntfOld.inc}注释掉。 4、将delphi7(你当前的DELPHI版本)目录下的Odac目录下的.bpl文件复制到您的dephip安装目录C:\Program Files\Borland\Delphi7\...
Oracle SCN (System Change Number) 和 TIMESTAMP 是两种不同的时间表示方式,它们在Oracle数据库中用于跟踪事务和数据的历史。SCN 是一个全局递增的数字,每次数据库发生改变时都会增加,它代表了数据库中的一个...
在 Oracle 中,delete 方法可以使用闪回方法恢复删除的数据。如果在删除数据后还没有进行大量的操作(只要保证被删除数据的块没有被覆写),就可以利用闪回方式直接找回删除的数据。 首先,需要确定删除数据的时间...
- 使用`SELECT CURRENT_TIMESTAMP FROM SYSIBM.SYS_DUMMY1;` - `CURRENT_TIMESTAMP`函数返回当前的时间戳。 #### 3. 空值处理 - **Oracle**: - 使用`NVL(column_name, 'default_value')` - `NVL`函数当指定的...
### Oracle数据库误删除数据的不同恢复方法 #### 一、引言 在日常的数据库管理工作中,数据误删除是一个常见的问题。对于Oracle数据库来说,它提供了一系列强大的数据恢复工具和技术,帮助管理员快速有效地恢复误...
### Oracle数据库误删除数据的不同恢复方法 #### 一、引言 在Oracle数据库管理中,误删除数据是一种常见的错误操作,可能导致重要的业务数据丢失。为了应对这种情况,Oracle提供了多种数据恢复的方法,包括闪回恢复...
接下来,有两种方法可以安装 Oracle 12c 所需的所有依赖包。 ##### 2.1 自动安装依赖包 使用如下命令可以一次性安装所有必需的依赖包: ``` [root@oracle ~]# yum install oracle-rdbms-server-12cR1-preinstall* ...
### Oracle 9i 使用闪回操作 #### 一、Oracle闪回技术概述 Oracle闪回技术是一种非常实用的功能,它允许用户在不依赖备份的情况下恢复数据。这项技术尤其适用于那些因误删除或更新而导致的数据丢失情况。Oracle 9i...
本文将详细介绍 `to_date()` 的使用方法、参数格式以及常见问题解决方法。 #### 二、基本语法与格式 `to_date()` 函数的基本语法如下: ```sql TO_DATE (expression, format_mask) ``` 其中: - `expression`: ...
在Oracle数据库中插入当前时间通常有两种方法:一种是使用SQL语句直接插入系统当前时间;另一种是在应用程序中生成时间戳后,通过预处理语句(PreparedStatement)插入到数据库中。 ##### 1. 使用 SQL 语句插入当前...
Oracle数据库的快照技术为数据恢复提供了一种高效便捷的方法。通过合理利用快照,可以有效避免因数据丢失或误删除带来的损失。当然,除了快照之外,Oracle还提供了其他数据恢复机制,如备份与恢复、闪回技术等,这些...
### SQL Server 转换至 Oracle 的方法及注意事项 在 IT 领域,数据库迁移是一项常见的任务,尤其是在从 SQL Server 迁移到 Oracle 的场景下。这种迁移涉及到多个层面的技术挑战,包括但不限于语法差异、数据类型...