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')欢迎分享,转载请注明来源:内存溢出
评论列表(0条)