oracle与sql server时间差的取法

时间:2023-03-08 17:37:09

Oracle:

oracle 两个时间相减默认的是天数

oracle 两个时间相减默认的是天数*24 为相差的小时数

oracle 两个时间相减默认的是天数*24*60 为相差的分钟数

oracle 两个时间相减默认的是天数*24*60*60 为相差的秒数

例如

DECLARE create_time DATE := to_date('2016-05-23 12:52:00','yyyy-mm-dd hh:mi:ss');
n_count int;
begin
n_count:=ROUND((sysdate - create_time) * 24 * 60);
dbms_output.put_line(n_count);
end;

SQL server:

DATEDIFF ( date-part, date-expression-1, date-expression-2 )

date-part参数类型:year | quarter | month | week | day | hour | minute | second | millisecond 

date-part               指定要测量其间隔的日期部分。

date-expression-1    某一间隔的起始日期。从 date-expression-2 中减去该值,返回两个参数之间 date-parts 的天数。

date-expression-2    某一间隔的结束日期。从该值中减去 Date-expression-1,返回两个参数之间 date-parts 的天数。

例如

declare @create_time     DATETIME,@n int;
set @create_time='2016-05-23 12:52:00';
select @create_time;
select GETDATE();
select ROUND(DATEDIFF( DAY, @create_time,GETDATE())*24*60,0)
--set @n=ROUND(DATEDIFF( DAY, @create_time,GETDATE())*24*60,0)
--print(@n)

 两个数据库类型中ROUND均为取整函数

*类似MYSQL中时间相差方法为ceil((strtotime(timeend)-strtotime(timestart))/3600)取出小时数