zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle 技能强化 Part 7 日期运算

Oracle日期 技能 运算 强化 Part
2023-09-14 09:13:33 时间

1. 加减日、月、年

2.加减时、分、秒

3.日期间隔这时、分、秒

4.日期间隔之日、月、年

 

5.计算一年中周内各日期的次数(好比说计算一年中周一有多少天,周二有多少天等等)

WITH x0 AS
 (SELECT trunc(SYSDATE, 'y') AS 年初 FROM dual),
x1 AS
 (SELECT 年初, add_months(年初, 12) AS 年底 FROM x0),
x2 AS
 (SELECT 年初, 年底, 年底 - 年初 AS 天数 FROM x1),
x3 AS /*生成列表*/
 (SELECT 年初 + LEVEL - 1 AS 日期 FROM x2 CONNECT BY LEVEL <= 天数),
x4 AS /*对数据进行转称*/
 (SELECT 日期, to_char(日期, 'DY') AS 星期 FROM x3)
/*汇总求天数*/
SELECT 星期, COUNT(*) AS 天数 FROM x4 GROUP BY 星期;

 可以用'DDD',来计算天数,语句为 to_char((add_months(trunc(SYSDATE,'y'),12) - 1),'DDD')

 

6.确定当前记录和下一条记录之间相差的天数

求员工与下一个聘用的员工之间相差的天数。使用lead返回下一个聘用人员的日期。