年份不同

时间:2021-02-02 15:49:34

标签: oracle datediff

如何以 '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

3 个答案:

答案 0 :(得分:1)

我建议使用 "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, to_date('1994-08-13', 'YYYY-MM-DD'))/12) from dual;

26

答案 1 :(得分:0)

只需从另一个日期中减去一个日期:

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

答案 2 :(得分:0)

因此,从这些日期中提取年并减去它们:

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>
相关问题