日期如何增加一年 update ndxx set zwrq=to_date('2011-01-01','yyyy-mm-dd') 更新日期的时候 我希望时间加一年 怎么写就是我做年度结转的时候 我希望 2011-01-01 变成 2012-01-01 这个sql 怎么写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select add_months(sysdate,12) from dual; Sys@ANTU-YG> Select Sysdate+365 From dual;SYSDATE+365-------------------2012-02-22 13:45:17已用时间: 00: 00: 00.06Sys@ANTU-YG> select sysdate, add_months(sysdate,12) from dual; select sysdate, add_months(sysdate,12) from dual; 有个牛逼的方法是我原创的 嘻嘻to_char((to_number(yourdate)/10000 + 1) + to_number(yourdate)%10000) update ndxx set zwrq=add_months(to_date('2011-01-01','yyyy-mm-dd'),12)2楼的365天可不对 闰年呢 UPDATE NDXX SET ZWRQ = ADD_MONTHS(TO_DATE('2011-01-01', 'yyyy-mm-dd'), 12);这个吧 add_months可以实现,但是我们该想想为什么Oracle没有add_years的功能呢?貌似SQL SERVER是有直接加年的操作的!也许这就是Oracle要体现出与微软的不同吧! --也可以这样select sysdate, sysdate + interval '1' year add_year, sysdate + interval '1' month add_month, sysdate + interval '1' day add_day, sysdate + interval '1' hour add_hour, sysdate + interval '1' minute add_minute, sysdate + interval '1' second add_secondfrom dual 精简.如果要得到年数的直接add_months(begin_time,年数*12) update ndxx set zwrq= (select add_months(to_date('2011-01-01','yyyy-mm-dd'),12) from dual) update ndxx set zwrq=to_date('2011-01-01','yyyy-mm-dd')+ interval '1' year; select add_months(to_date('2011-02-28','yyyy-mm-dd'),12) from dual大家看看这个结果,好像不行。 select add_months(sysdate,12) from dual;select sysdate, sysdate + interval '1' year add_year, sysdate + interval '1' month add_month, sysdate + interval '1' day add_day, sysdate + interval '1' hour add_hour, sysdate + interval '1' minute add_minute, sysdate + interval '1' second add_secondfrom dual;这样真的可以,学习了这些都是好方法呀收集了 sysdate + interval '1' year add_year,select add_months(sysdate,12) from dual;这两种方法是有区别的。第一种方法直接加年的方法。无脑第二种方法是经过运算的,能够避免一些不必要的意外。以2011-02-28为例:第一个方法的结果为 2012-02-28第二个方法的结果为 2012-02-29以2012-02-29为例:第一个方法的结果会出现错误。因为在2013年没有2月29号这一天第二个方法的结果为 2013-02-28 update a t set t.sj = add_months(t.sj,12) where t.id = '???' 加个decode 区分平年和闰年也行 不过麻烦 有ADD_MONTH现成的 就用 select add_months(sysdate,12) as setdate from dual; 1楼就已经是正确答案了补interval 在虚拟机Vmware的red hat linux as5.4下安装oracle10g进度停滞不前的问题~~~ oracle创建序列相关问题 关于本地网关联嵌套表查询的问题,专家进! 问个关于utl_file_dir 目录的问题 问个简单的算法(大分) 索引的问题!请大侠解答 存储过程问题 请问我从oracle网站上下了一个oracle9,请问这需要注册码?谢谢了 VC下怎样调用ORACLE的存储过程(带参数) 关于PK和INDEX讨论,参与讨论给分,截止8.8 在solaris下用root与用oracle用户登陆oracle的问题 pb9.0连接oracle的问题
SYSDATE+365
-------------------
2012-02-22 13:45:17已用时间: 00: 00: 00.06
Sys@ANTU-YG>
这个吧
select sysdate,
sysdate + interval '1' year add_year,
sysdate + interval '1' month add_month,
sysdate + interval '1' day add_day,
sysdate + interval '1' hour add_hour,
sysdate + interval '1' minute add_minute,
sysdate + interval '1' second add_second
from dual
如果要得到年数的直接add_months(begin_time,年数*12)
大家看看这个结果,好像不行。
select sysdate,
sysdate + interval '1' year add_year,
sysdate + interval '1' month add_month,
sysdate + interval '1' day add_day,
sysdate + interval '1' hour add_hour,
sysdate + interval '1' minute add_minute,
sysdate + interval '1' second add_second
from dual;
这样真的可以,学习了这些都是好方法呀收集了
第二种方法是经过运算的,能够避免一些不必要的意外。以2011-02-28为例:
第一个方法的结果为 2012-02-28
第二个方法的结果为 2012-02-29以2012-02-29为例:
第一个方法的结果会出现错误。因为在2013年没有2月29号这一天
第二个方法的结果为 2013-02-28
补interval