数据库时间差

数据库时间差,第1张

先给此表增加一个数字类型的列“diff”,然执行如下sql语句

update

[表名]

set

[diff]=datediff(day,[a日期列],[b日期列])

datediff函数的第一个参数设置为day时,计算的是两个日期以天为单位的差数,设置为month、year时以此类推。

可以考虑用窗口函数,给一个例子仅供参考。

drop table sub purge

create table sub (id number, v number)

insert into sub values(1, 2)

insert into sub values(2, 4)

insert into sub values(3, 6)

insert into sub values(4, 8)

insert into sub values(5, 10)

insert into sub values(6, 12)

insert into sub values(7, 14)

insert into sub values(8, 16)

insert into sub values(9, 18)

insert into sub values(10, 20)

commit

上面是建表和插入一些数据。按照ID排序之后,查询当前行的V减上面一行的V,可以用这个语句。

SELECT FIRST_VALUE(V) OVER (ORDER BY ID ROWS BETWEEN 1 PRECEDING AND CURRENT ROW),

       LAST_VALUE(V) OVER (ORDER BY ID ROWS BETWEEN 1 PRECEDING AND CURRENT ROW),

       LAST_VALUE(V) OVER (ORDER BY ID ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - FIRST_VALUE(V) OVER (ORDER BY ID ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)

  FROM SUB

DATEDIFF(datepart,startdate,enddate)比如:SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate得到结果是1 datepart 参数可以是下列的值:datepart缩写年yy, yyyy季度qq, q月mm, m年中的日dy, y日dd, d周wk, ww星期dw, w小时hh分钟mi, n秒ss, s毫秒ms微妙mcs纳秒ns


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9972887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存