oracle 数据库时间比较,请高手指点一下!

oracle 数据库时间比较,请高手指点一下!,第1张

1. 你用30补充日的信息,如果是二月怎么办,就报错了。

2. 当前时间不需要这么复杂TO_DATE(to_char(TRUNC(SYSDATE),'yyyy/mm/dd'), 'yyyy/mm/dd')

TRUNC(SYSDATE) 即可

3. 个人理解,你的年、月 字段 应该是数字类型吧,那么一个先转换(如果是字符,则不需转换):

TO_DATE(to_char(D.plan_year) || '/' || to_char(D.plan_month) || '/30', 'yyyy/mm/dd')

我给你一个思路:

当前日期 - (某年某月 第一日 + 1月 - 1日)

其中: 某年某月 第一日 + 1月 即下一月的第一天; 再 -1日 就是某年某月的 最后一天:

select * from M_PLAN_INFO D WHERE TRUNC(SYSDATE) - (add_months(TO_DATE(to_char(D.plan_year) || '/' || to_char(D.plan_month) || '/30', 'yyyy/mm/dd'),1) - 1 ) >30

Oracle:

select * from a where crsj <sysdate - 2/24

MYSQL:

select * from a where crsj <NOW() - INTERVAL 2 HOUR

如果想兼容,办法不是没有

在调用SQL的程序中提前计算出时间,然后组合到数据库查询的SQL中

to_date(to_char(Tbale1.date, 'yyyymmdd') || to_char(Tbale1.time, 'hh24miss'), 'yyyymmddhh24miss') >to_date(Table2.datetime, 'yyyymmddhh24miss')


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存