如何解决年份不同
如何以 'YYYY-MM-DD' 格式查找以年为单位的日期差异。
我使用以下两个队列:
SELECT TRUNC(TO_NUMBER(SYSDATE - TO_DATE('1994-08-13')) / 365.25) AS AGE FROM DUAL;
ORA-01861: 文字与格式字符串不匹配
SELECT (TO_DATE(SYSDATE,'YYYY-MM-DD') - TO_NUMBER('1994-08-13','YYYY-MM-DD')) FROM DUAL;
O/P-:-727738
期望的 o/p:26
解决方法
我建议使用 "months_between" 函数,因为它考虑了闰年(months_between 需要 2 个日期作为参数):
select months_between(sysdate,to_date('1994-08-13','YYYY-MM-DD'))/12 from dual;
26,4729751904122
当然,如果你需要截断:
select trunc(months_between(sysdate,'YYYY-MM-DD'))/12) from dual;
26
,
只需从另一个日期中减去一个日期:
sysdate - date '1994-08-13'
或
sysdate - to_date('1994-08-13','yyyy-mm-dd')
返回两个日期之间的天数。
因此将您的第一个查询重写为:
select (sysdate - date '1994-08-13') / 365.25 as age
from dual
,
因此,从这些日期中提取年并减去它们:
SQL> select extract (year from sysdate) - extract(year from date '1994-08-13') diff
2 from dual;
DIFF
----------
27
SQL>
因为,
SQL> select 2021 - 1994 diff from dual;
DIFF
----------
27
SQL>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。