oracle中如何获得日期中的年份?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中如何获得日期中的年份?相关的知识,希望对你有一定的参考价值。

以下列举两种方式在在Oracle中获得日期中的年份,例如把sysdate中的年份取出来。

1、Select to_number(to_char(sysdate,'yyyy')) from dual

实例代码:

select

to_number(to_char(t.hiredate,'yyyy'))as 入职年,

from emp t;

运行结果:

2、使用Extract函数,Select Extract(year from sysdate) from dual,这种方法省掉了类型转换,

看上去更加简洁。此方法获得的结果,是数值型

实例代码:

select

extract(year from t.hiredate) as入职年,

from emp t  ;

运行结果:

扩展资料:

如果想在Oracle中获取日期中的月份,天数。可以将Select to_number(to_char(sysdate,'yyyy')) 

from dual改为Select to_number(to_char(sysdate,'MM')) from dual和Select 

to_number(to_char(sysdate,'DD')) from dual。

Extract函数中只需将Select Extract(month from sysdate) from dual改为Select Extract(year from sysdate) from dual和Select Extract(day from sysdate) from dual

参考技术A 在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来,并不是一件难事。常用的方法是:Select to_number(to_char(sysdate,'yyyy')) from dual,而实际上,oracle本身有更好的方法,那就是使用Extract函数,使用方法是:Select Extract(year from sysdate) from dual,这种方法省掉了类型转换,看上去更加简洁。相应的,要取得月份或日,可以用select extract (month from sysdate) from dual和select extract (day from sysdate) from dual。
此方法获得的结果,是数值型的,你可以设置一个方法测试一下。本回答被提问者采纳

Oracle 日期 - 如何将年份相加

【中文标题】Oracle 日期 - 如何将年份相加【英文标题】:Oracle Date - How to add years to date 【发布时间】:2012-03-07 23:11:41 【问题描述】:

我有一个日期字段

DATE = 10/10/2010

sum = 4(这是计算的年数)

有没有办法在 2010 年 10 月 10 日加上四年并成功 2014 年 10 月 10 日?

【问题讨论】:

【参考方案1】:

尝试添加月份(12 * 年数)。像这样-

add_months(date'2010-10-10', 48)

【讨论】:

【参考方案2】:

使用add_months

例子:

SELECT add_months( to_date('10-OCT-2010'), 48 ) FROM DUAL;

警告 add_months,如果您输入一个月的最后一天开始,则返回结果月份的最后一天。

因此,add_months(to_date('28-feb-2011'),12) 将返回 29-feb-2012。

【讨论】:

【参考方案3】:

我相信你可以使用ADD_MONTHS() 函数。 4 年是 48 个月,所以:

add_months(DATE,48)

以下是使用该功能的一些信息:

http://www.techonthenet.com/oracle/functions/add_months.php

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1157035034361

【讨论】:

【参考方案4】:

我不确定我是否正确理解了您的问题,但是

select add_months(someDate, numberOfYears * 12) from dual

可能会成功

【讨论】:

也适用于闰年。【参考方案5】:

你可以试试这个:

someDate + interval '4' year

INTERVAL

【讨论】:

只是一个建议。避免使用 INTERVAL 数据类型。它符合 ANSI/ISO 标准。因此,您所写的声明在 2 月 29 日将不起作用。通常由您决定结果是否正确。而 add_months 是 Oracle 专有的,可以为案例生成有效日期。 @ibre5041 很抱歉从坟墓中提出这个帖子,但我正在寻找一种方法来做到这一点,而不是在计算生日时坚持到该月的最后一天,因为 add_month() 失败了 2 /28。当下一年是闰年时 add_months(to_date('02-28','MM-DD')) 返回 02-29,这是不正确的。我发现执行以下操作总是返回正确的日期:(to_date('02-28','MM-DD') - 1) + interval '1' year + 1 返回 02-28,即使下一年是闰年年,如果你输入 02-29,它将在非闰年返回 03-01。 @Bob 遗憾的是,select (to_date('01-31','mm-dd') -1 ) + interval '1' month +1 from dual; 总是与ORA-01839: date not valid for month specified 发生冲突。 但是我们添加的是年,而不是月。【参考方案6】:

除了 ADD_MONTHS 之外还有一个选项

SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('1-0')
--------- ----------------------------
29-OCT-13 29-OCT-14                   
1 row selected.


SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '2-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('2-0')
--------- ----------------------------
29-OCT-13 29-OCT-15                   
1 row selected.

SELECT
      TO_DATE ( '29-FEB-2004',
              'DD-MON-YYYY' )
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL

   *
Error at line 4

ORA-01839: date not valid for month specified

但最后一个是非法的,因为 2005 年没有 2 月 29 日,因此它在闰年情况下(2 月 29 日)失败

同样阅读documentation

【讨论】:

【参考方案7】:
        SELECT TO_CHAR(SYSDATE,'YYYY')-2 ANO FROM DUAL

【讨论】:

以上是关于oracle中如何获得日期中的年份?的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE如何获得日期中的年份

ORACLE如何获得日期中的年份

如何从两个不同的日期获得年份差异?

sql中如何提取从数据库中所获得时间的年份

如何从当前日期获得准确的年龄(包括年份和月份)?

jQuery 日期选择器。我如何从 Jquery datepicker 中获取年份