您的位置 首页 > 娱乐休闲

Oracle常用的时间函数

问题和解决方法

遇到的问题也很简单:

表1是一个统计信息表,每小时整点的时候统计一次,历史统计的数据不删除,统计时间字段为createdtime.

前台展示的时候,按照最后一次统计出来的数据进行处理展示。

查询sql为:

..... where createdtime = (select max(createdtime) from 表1)....

但是后来发现,统计时间有时候会超过一秒,导致10:00开始统计,有些数据的createtime = '..... 10:00:00',有些数据的createtime = '..... 10:00:01',导致前台展示不准确。

用了一个比较笨的办法解决,也是不是太严谨的办法解决,因为确定统计最长时间也就是1-2秒,所以将查询sql改为:

..... where createdtime > (select max(createdtime)-(5/24/60/60) from 表1)....

查询最晚的统计时间,计算前五秒得到一个时间,查询sql createdtime > 这个计算后的时间。

Oracle时间日期操作

  • sysdate+(5/24/60/60) 在系统时间基础上延迟5秒

  • sysdate+5/24/60 在系统时间基础上延迟5分钟

  • sysdate+5/24 在系统时间基础上延迟5小时

  • sysdate+5 在系统时间基础上延迟5天

  • add_months(sysdate,-5) 在系统时间基础上延迟5月

  • add_months(sysdate,-5*12) 在系统时间基础上延迟5年

  • 上月末的日期:select last_day(add_months(sysdate, -1)) from dual;

  • 本月的最后一秒:select TRUNC(add_months(sysdate,1),'MM') - 1/24/60/60 from dual

  • 本周星期一的日期:select trunc(sysdate,'day')+1 from dual

  • 年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual;

  • 今天是今年的第几周 :select to_char(sysdate,'fmww') from dual

  • 今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual

  • 本月的天数:SELECT to_char(last_day(SYSDATE),'dd') days FROM dual

  • 今年的天数:select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual

  • 下个星期一的日期:SELECT Next_day(SYSDATE,'monday') FROM dual

  • 判断当前时间是上午下午还是晚上

SELECT CASE

WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 6 AND 11 THEN '上午'

WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 11 AND 17 THEN '下午'

WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 17 AND 21 THEN '晚上'

END

FROM dual;

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何查看oracle时间,如何查看oracle版本,如何查看oracle日志,如何查看oracle是多少位的”边界阅读