在MySQL中是这样写
SELECT * FROM `表1` WHERE `条件字段`='条件1' and DATE_SUB(CURDATE(), INTERVAL 7 MONTH) <= date(时间字段)
意思是,查询 表1 中 条件字段 符合 条件1 ,并且时间字段是近7个月的内容,但是在Oracle中写法不对,报ORA-00907 缺失右括号错误,正确的写法应该怎么写?
PS: 时间字段格式:2018-07-16 00:00:00 这种的
不需要计数之类的操作,就是查出近7个月的所有数据
---如果时间字段是date类型
SELECT * FROM 表1 WHERE 条件字段='条件1' and 时间字段>=add_months(trunc(sysdate),7);
---如果时间字段是varchar2 类型
SELECT * FROM 表1 WHERE 条件字段='条件1' and 时间字段>=to_char(add_months(sysdate,7),'yyyy-mm-dd');
--以上sql都是忽略时分秒的
SELECT * FROM 表1
WHERE 条件字段
='条件1' and add_months(sysdate,7)<= date(时间字段)
SELECT * FROM 表1 WHERE 条件字段='条件1' and to_char(add_months(sysdate,7), 'yyyy-mm-dd 00:00:00') <= date(时间字段)
select * from 表 where 条件字段= ‘条件1’ and to_number(to_char(时间字段, 'yyyyMMdd')) > 20210301 and to_number(to_char(时间字段, 'yyyyMMdd')) < 20220101