Oracle sql 计算时间差表达式

--取第几天的数据。

select from table where trunc(sysdate)-trunc(cr)=1; 

select from table where trunc(sysdate)-trunc(cr)=2; 

select from table where trunc(sysdate)-trunc(cr)=8; 

--获取两时间的相差豪秒数

select ceil((To_date(‘2008-05-02 00:00:00‘ ‘yyyy-mm-dd hh24-mi-ss‘) - To_date(‘2008-04-30 23:59:59‘ ‘yyyy-mm-dd hh24-mi-ss‘)) * 24 * 60 * 60 * 1000) 相差豪秒数 FROM DUAL;

/*

相差豪秒数

----------

  86401000

1 row selected

*/

--获取两时间的相差秒数

select ceil((To_date(‘2008-05-02 00:00:00‘ ‘yyyy-mm-dd hh24-mi-ss‘) - To_date(‘2008-04-30 23:59:59‘ ‘yyyy-mm-dd hh24-mi-ss‘)) * 24 * 60 * 60) 相差秒数 FROM DUAL;

/*

相差秒数

----------

     86401

1 row selected

*/

--获取两时间的相差分钟数

select ceil(((To_date(‘2008-05-02 00:00:00‘ ‘yyyy-mm-dd hh24-mi-ss‘) - To_date(‘2008-04-30 23:59:59‘ ‘yyyy-mm-dd hh24-mi-ss‘))) * 24 * 60)  相差分钟数 FROM DUAL;

/*

相差分钟数

----------

      1441

1 row selected

*/

--获取两时间的相差小时数

select ceil((To_date(‘2008-05-02 00:00:00‘ ‘yyyy-mm-dd hh24-mi-ss‘) - To_date(‘2008-04-30 23:59:59‘ ‘yyyy-mm-dd hh24-mi-ss‘)) * 24)  相差小时数 FROM DUAL;

/*

相差小时数

----------

        25

1 row selected

*/

--获取两时间的相差天数

select ceil((To_date(‘2008-05-02 00:00:00‘ ‘yyyy-mm-dd hh24-mi-ss‘) - To_date(‘2008-04-30 23:59:59‘ ‘yyyy-mm-dd hh24-mi-ss‘)))  相差天数 FROM DUAL;

/*

相差天数

----------

         2

1 row selected

*/

--获取两时间月份差

select (EXTRACT(year FROM to_date(‘2009-05-01‘,‘yyyy-mm-dd‘)) - EXTRACT(year FROM to_date(‘2008-04-30‘,‘yyyy-mm-dd‘))) * 12 + 

       EXTRACT(month FROM to_date(‘2008-05-01‘,‘yyyy-mm-dd‘)) - EXTRACT(month FROM to_date(‘2008-04-30‘,‘yyyy-mm-dd‘)) months

from dual;

/*

MONTHS

----------

        13

1 row selected

*/

--获取两时间年份差

select EXTRACT(year FROM to_date(‘2009-05-01‘,‘yyyy-mm-dd‘)) - EXTRACT(year FROM to_date(‘2008-04-30‘,‘yyyy-mm-dd‘)) years from dual;

/*

YEARS

----------

         1

1 row selected

*/

时间: 2024-10-27 02:23:37

Oracle sql 计算时间差表达式的相关文章

sql计算时间差执行存储过程

<pre name="code" class="sql">-- datediff( day, '比较时间', GETDATE() ) DECLARE @ctime INT SELECT @ctime = datediff( day, (SELECT MAX(InDate) FROM OrderSettlement), GETDATE() ) IF @ctime > 0 BEGIN -- 时差大于1天 END 版权声明:本文为博主原创文章,未经博主允

SQL计算时间差并排除周末

CREATE FUNCTION DI_FN_GET_WorkDay (@begin DATETIME , @end DATETIME ) RETURNS int BEGIN DECLARE @i INT , @j INT SET @i = 0 SET @j = 0 IF @end > @begin BEGIN WHILE DATEDIFF(d, DATEADD(d, @i, @begin), @end) <> 0 BEGIN IF DATEPART(weekday, DATEADD(d,

db2和oracle sql 语句中计算两个时间差的语法

db2 sql语句中计算两个日期相差的语法 结束日期为:2015-10-10  11:30:00 开始日期为:2015-09-09  10:40:00 (1)timestampdiff(8,char(结束时间-开始时间) )(加时分秒计算,会舍去零数)值为744小时 (2)(days(结束时间)-days(开始时间))*24 +hour(结束时间)-hour(开始时间) (不加时分秒计算)值为745小时 (3)Days(结束日期)-days(开始日期)的值为31天 (4)Day(结束日期)-da

sql server 计算时间差的一部分函数【转】

在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及GetDate()函数了.DATEDIFF ( datepart , startdate , enddate )释义:计算时间差datepare值:year | quarter | month | week | day | hour | minute | second | millisecondstartdate:开始日期enddate :结束日期GetDate(

Oracle SQL日期比较和常用日期函数

一.oracle sql日期比较 在今天之前: select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') 在今天只后: select * from up_date where updat

oracle sql优化

第一掌 避免对列的操作 任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数.计算表达式等等,查询时要尽可能将操作移至等式的右边,甚至去掉函数. 例1:下列SQL条件语句中的列都建有恰当的索引,但30万行数据情况下执行速度却非常慢: select * from record where  substrb(CardNo,1,4)='5378'(13秒) select * from record where  amount/30< 1000(11秒) select * from recor

oracle sql 知识小结

Oracle_sql 培训: 第一单元:select 语句: ①:字符串连接操作符: || ②:去除重复行:distinct 第二单元:条件限制和排序 ①:关键字:where ②:比较操作符:=,>,<,between...and...,in,like,is null :使用like做模糊匹配:可使用%或者_作为通配符:%代表0个或多个字符._代表一个单个字符.escape为标识转义字符 escape '/'. ③:排序:order by  asc(升序默认)/desc(倒序) 第三单元:单行

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

Oracle SQL性能优化

转载自:http://www.cnblogs.com/rootq/archive/2008/11/17/1334727.html (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection ta