`
xaajie
  • 浏览: 73234 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle时间相关-(求timestamp类型的时间差)

阅读更多

TIMESTAMP数据类型:是DATE的扩展,可以存储年、月、日、小时、分钟、秒,同时还可以存储秒的小数部分。

通过to_timestamp函数将date型转成这种类型,来看看它的形式

详见代码:

SELECT TO_TIMESTAMP('2009-7-30','yyyy-mm-dd')
  FROM dual

 
结果为:30-7月 -09 12.00.00.000000000 上午

 

timestamp以日期格式输出表示

 select TO_CHAR(to_timestamp('2009-7-30','yyyy-mm-dd hh24:mi:ss') ,'YYYY-MM-DD HH24:MI:SS')
  from dual

 
结果为:2009-07-30 00:00:00

 

date格式的时间差,以秒为单位:

select (to_date('2009-7-30', 'yyyy-mm-dd hh24:mi:ss') -
       to_date('2009-7-29', 'YYYY-MM-DD HH24:mi:ss')) * 86400 as "itvtime"
 from dual

 

结果为:86400

 

timestamp格式求时间差,以秒为单位:

select (to_date(TO_CHAR(to_timestamp('2009-7-30','yyyy-mm-dd hh24:mi:ss') , 'yyyy-mm-dd hh24:mi:ss'),
                'yyyy-mm-dd hh24:mi:ss') -
       to_date(TO_CHAR(to_timestamp('2009-7-29','yyyy-mm-dd hh24:mi:ss') , 'yyyy-mm-dd hh24:mi:ss'),
                'YYYY-MM-DD HH24:mi:ss')) * 86400 as "itvtime"
 from dual

 结果为:86400

 

求任意timestamp格式的时间戳,据1970年01月01日的毫秒数:

SELECT (to_date(TO_CHAR(to_timestamp('2009-7-30','yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') -
       to_date('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:mi:ss')) * 86400000
  FROM dual

 结果为:1248912000000


应用:具体应用时将例子中to_timestamp()阴影部分代码换成相应字段即可(该字段是timestamp格式)

          与得到以分为单位或小时为单位只需要变乘的数即可

虽然实现了时间差的计算,自我感觉比较复杂化,希望找到比较简便的方法。。。

 

 

根据日期求当月天数

select add_months(trunc(to_date('2009-9', 'yyyy-mm'), 'mm'), 1) 
       - trunc(to_date('2009-9', 'yyyy-mm'), 'mm')
  from dual

 

结果为:30

7
3
分享到:
评论
4 楼 zxd421308862 2016-09-25  
我请问你把timestamp后面的毫秒数丢那里去了??
你的文章题目应该是怎么计算date类型时间差,而不是timestamp时间差,还自我感觉比较复杂,对不对都是个问题
3 楼 Zhanggc 2011-08-16  
不错。很实用。
2 楼 raojl 2009-08-02  
lkjust08 写道
敢问楼主TO_TIMESTAMP('2009-7-30','yyyy-mm-dd') 这个函数的具体意思是什么?
输出的结果是结果为:30-7月 -09 12.00.00.000000000 上午,为什么不是yyyy-mm-dd型的?

TO_TIMESTAMP('2009-7-30','yyyy-mm-dd')只是把2009-7-30串转换成timestamp类型,并
没有说输出格式哦!
1 楼 lkjust08 2009-08-02  
敢问楼主TO_TIMESTAMP('2009-7-30','yyyy-mm-dd') 这个函数的具体意思是什么?
输出的结果是结果为:30-7月 -09 12.00.00.000000000 上午,为什么不是yyyy-mm-dd型的?

相关推荐

    oracle中TIMESTAMP与DATE比较

    此外,当需要计算两个`DATE`类型值之间的时间差时,Oracle默认返回的结果是以天为单位的浮点数。这意味着如果需要获取具体的小时、分钟和秒数,还需要额外的转换步骤。例如,可以通过乘以一天的秒数(86400秒)并...

    oracle日期时间数据类型与时间间隔数据类型讲解

    - **说明**: 用于表示两个日期或时间点之间的时间差。 - **参数**: - `INTERVAL YEAR(year_precision) TO MONTH`: 存储年和月的时间间隔。 - `year_precision`: 指定年份整数位数,最大9位,默认2位。 - `...

    Oracle中TO-DATE格式.docx

    在 Oracle 中,日期类型可以是 DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE 等多种形式。TO_DATE 函数的基本语法是 TO_DATE( string, format ),其中 string 是要转换的字符串,format 是转换的格式。 在 TO_DATE ...

    sql查询oracle时间段操作

    在SQL查询中对Oracle数据库进行时间段操作是一项关键技能,特别是在数据恢复和历史数据分析时。Oracle数据库提供了多种方式来处理时间范围的数据,包括SQL查询、闪回功能和快照。下面我们将详细探讨这些知识点。 ...

    使用Oracle中的时间间隔型数据

    在Oracle数据库中,时间间隔型数据(INTERVAL)的...总的来说,Oracle的时间间隔型数据提供了对时间跨度的精确管理和计算,极大地简化了涉及时间差的操作,使得在数据库中处理时间相关的业务逻辑变得更加方便和准确。

    Oracle计算时间差为毫秒的实现代码

    在Oracle数据库中,计算时间差通常涉及到日期和时间...总之,计算Oracle中的毫秒时间差涉及到了对日期和时间类型的理解,以及对字符串操作和数值计算的运用。在实际应用中,应根据数据库版本和性能需求选择合适的方法。

    oracle数据类型

    - **应用场景**:适用于计算两个时间点之间的精确时间差。 4. **TIMESTAMP[(seconds_precision)]** - **描述**:日期和时间类型,用于存储精确到秒甚至毫秒级别的日期时间。 - **应用场景**:适用于需要高精度...

    oracle时间函数

    Oracle时间函数是数据库管理中非常关键的一部分,特别是在处理与日期和时间相关的数据时。在Oracle数据库中,时间函数允许我们进行各种操作,如获取当前日期和时间、计算日期之间的差异、调整日期以及按特定周期对...

    Oracle date 和 timestamp 区别详解

    Oracle数据库中的DATE和TIMESTAMP是两种不同的数据类型,它们在存储日期和时间信息时有所区别。 1. DATE数据类型: DATE类型是最基础的日期时间数据类型,它可以存储日期(年、月、日)和时间(时、分、秒)。在...

    Oracle的日期和时间详解.pdf

    INTERVAL类型则是用来存储两个日期或时间点之间的时间差,可以表示年、月、日、小时、分钟和秒的组合,而且可以与DATE或TIMESTAMP进行加法运算,生成新的日期或时间戳值。 在Oracle中,当查询DATE类型时,数据库会...

    oracle课堂笔记

    - `TIMESTAMP`:精确到毫秒的时间戳类型。 - **大型对象类型**: - `CLOB`:存储大文本数据,如文档或文章。 - `BLOB`:存储二进制数据,如图像或视频文件。 #### SQL操作符 - **算术运算符**:`+` `-` `*` `/` ...

    Oracle公司内部数据库培训资料Les16chinese.ppt

    - `TO_YMINTERVAL`用于创建年月间隔,常用于计算时间差。 3. 时区敏感性: - `CURRENT_DATE` 和 `CURRENT_TIMESTAMP` 都会受到会话时区设置的影响,这意味着当你更改会话时区时,这两个函数返回的值也会相应改变...

    dba日记-记录oracle dba的故事

    - **TIMESTAMP**: 存储日期和时间,但比DATE类型更精确,可以存储到毫秒级。 - **TIMESTAMP WITH TIME ZONE**: 包含时区信息的时间戳,非常适用于处理跨越多个时区的数据。 - **TIMESTAMP WITH LOCAL TIME ZONE**:...

    2021-2022收藏的精品资料Oracle日期函数大全.docx

    在Oracle数据库中,日期时间数据类型包括DATE和TIMESTAMP两种。本篇文章将主要介绍日期相关的函数。 ### TO_DATE 函数详解 `TO_DATE`函数用于将字符串转换成日期格式。在Oracle中,`TO_DATE`函数的格式非常灵活,...

    在Oracle 9i中如何设置时间间隔型数据

    时间间隔不仅可以正向表示,还可以表示负向的时间差。它们可以与TIMESTAMP类型的数据结合,通过加减运算生成新的TIMESTAMP值,实现时间的前后移动。例如,如果有一个实验的开始时间(experiment_start)和持续时间...

    pg与oracle语法差异

    - **PostgreSQL**: 使用 `CURRENT_DATE` 或 `CURRENT_TIMESTAMP` 获取当前日期或日期时间,并通过 `TO_CHAR` 函数进行格式化。 #### 六、计算两个日期之间的间隔 - **Oracle**: 可以直接相减两个 `DATE` 类型的值。...

    PostgreSQL與Oracle跟SQL92 Standard的差異

    - **ISO SQL92 Standard**、**PostgreSQL**与**Oracle**:三者均支持`timestamp`类型,用于存储时间戳数据,但PostgreSQL和Oracle的`timestamp`类型具有固定的字节数量,而ISO SQL92标准中的`timestamp`类型大小则...

    oracle数据类型.docora复制

    首先,Oracle数据类型大致可以分为四大类:数值型、字符型、日期/时间型和二进制型。数值型数据类型包括整数类型(如NUMBER、INTEGER、BINARY_INTEGER)和浮点类型(如BINARY_FLOAT、BINARY_DOUBLE)。NUMBER是最...

    Oracle时间日期操作.docx

    Oracle数据库在处理时间日期操作方面提供了丰富的功能,涵盖了日期的计算、转换以及各种时间单位的提取。以下是一些重要的Oracle时间日期操作知识点: 1. **日期和字符转换**: - `TO_DATE`函数用于将字符串转换为...

    Oracle函数及其查询.pptx

    Oracle 引入了三种日期时间类型:TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE。 常用的 DateTime 函数有: * CURRENT_TIMESTAMP:返回当前的日期和时间 * TIMESTAMP:将日期和时间转换...

Global site tag (gtag.js) - Google Analytics