ORACLE两个日期相减出错,各位亲有知道的吗

SELECT TO_DATE('2020', 'YYYY') - TO_DATE('2019', 'YYYY')
FROM DUAL
为什么结果会是365 而不是366?

因为没有日期,是2020年1月1日减去2019年1月1日,中间没有闰二月,所以是365

你用20200301-20190301就是366了

TO_DATE('2020', 'YYYY') 将字符串2020转化为日期类型 对应日期为 2020-01-01 同理 被减的日期是 2019-01-01
获取的是2019年整年的天数
2019年不是闰年只有365天,如果你使用 TO_DATE('2021','YYYY') - TO_DATE('2020','YYYY') 得到的是366 因为2020是闰年

这种写法得到的就是2019年整年的天数

你试试看用20200301-20190301,应该就是366了

2020年是闰年 你这是2019年整年天数 如果要得到366 你可以用 20200301-20190301

得到的就是2019年整年的天数

你这只是得到了2019年整年的天数

楼上说了因为2020年是闰年,2月份29天,所以20200301-20190301是366天

你这是2019整年天数,按照实际年份天数来的

2020年是闰年366天,2019年是平年365天,所以2020年减2019年是2020年的全部天数366天

2020年的天数减去2019年的天数为2019年的天数,又因为2019年为平年365天,所以为365

你获取的是2019年1月1日到2020年1月1日的天数,2019年2月份是28天,所以就是365了

因为你只减了年份,没有具体日期