这样显然是不正确的,需要使用以下方法来计算;
select months_between(to_date('202101','yyyymm'),to_date(LPAYM,'yyyymm')),LPAYM from dp006 where ACCNUM ='310000016011';
进行日期格式转换,并使用 months_between 计算间隔数即可。
select months_between(to_date('2021-10-18','yyyy-mm-dd'),to_date('2021-3-18','yyyy-mm-dd')) from dual;
Oracle 计算两日期之间月数实际应用中,有时候会计算两日期间隔天数、月数。如直接相减,可能会出问题,如:select 202110-202106 from dual;结果为:4看似正确,但如果跨年的话select 202110-202012 from dual;结果为:98这样显然是不正确的,需要使用以下方法来计算;select months_between(to_date('202101','yyyymm'),to_date(LPAYM,'yyyymm')),LPAYM from
select sysdate,
months_between(sysdate, to_date('2020-08-01','YYYY-MM-DD')),
months_between(sysdate, to_date('2021-08-29','YYYY-MM-DD'))
from dual
1.INTERVAL YEAR TO MONTH
时间精度是三位数例如:INTERVAL '1' YEAR :时间间隔是一年
INTERVAL '11' MONTH :时间间隔是11月
INTERVAL '1-3' YEAR TO MONTH :时间间隔是1年零3个月…..2.INTERVAL DAY TO SECONDINTERVAL '1' DAY :时间间隔是一天
INTER
oracle中的常用的函数的总结:
1、add_months(x,y)或者add_months(times,months)函数:
(1)用途:这个函数用于计算在时间x之上机上Y个月后的时间值,要是Y的值为负数的话就是在
这个时间点之间的时间值(这个时间-Y个月)。
(2)用法实例:
A:--从emp表查询列出来公司就职时间超过24年的员工名单
SELECT TO_DATE('2022-01-01', 'YYYY-MM-DD') + LEVEL - 1 AS d
FROM dual
CONNECT BY LEVEL <= TO_DATE('2022-12-31', 'YYYY-MM-DD') - TO_DATE('2022-01-01', 'YYYY-MM-DD') + 1
WHERE d BETWEEN TO_DATE('2022-01-01 09:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_DATE('2022-01-03 18:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND TO_CHAR(d, 'DY', 'NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN');
其中,`TO_DATE('2022-01-01', 'YYYY-MM-DD')`和`TO_DATE('2022-12-31', 'YYYY-MM-DD')`分别代表起始日期和截止日期。`TO_DATE('2022-01-01 09:00:00', 'YYYY-MM-DD HH24:MI:SS')`和`TO_DATE('2022-01-03 18:00:00', 'YYYY-MM-DD HH24:MI:SS')`分别代表开始时间和结束时间。`TO_CHAR(d, 'DY', 'NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN')`则用于排除周六和周日。
该语句的输出结果为两个时间之间的工作日数。