oracle sysdate 时间整理

来源:互联网 发布:html文章发布网页源码 编辑:程序博客网 时间:2024/05/17 02:53

一、获取oracle日期中的年份

在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。

 

      例如(1):
SQL> SELECT '年' AS "标题", EXTRACT(YEAR FROM SYSDATE) AS "数值" FROM dual UNION ALL
2  SELECT '月' AS "标题", EXTRACT(MONTH FROM SYSDATE) AS "数值" FROM dual UNION ALL
3  SELECT '日' AS "标题", EXTRACT(DAY FROM SYSDATE) AS "数值" FROM dual;
 

 


    例如(2):
SQL>  Select to_number(to_char(sysdate,'yyyymm')) as 月份   from dual

 

 

->>>另一种方式获取月份  年份

select EXTRACT(MONTH FROM SYSDATE) AS month FROM dual    ---获取月份  改成year就是获取年份

                           

 

 

二、insert插入语句 插入时间的写法
       

   写insert语句时,日期类型字段用 to_date('2011-04-15 13:25:00','yyyy-mm-dd hh24:mi:ss'),如果是插入当前时间,直接写sysdate应该就可以显示时分秒,

如果不行再转换一次试试

to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')


三、查询到秒、毫秒级
     

 查询到秒     select to_char(sysdate,'yyyy-MM-DD HH24:MM:SS') from dual
查询到毫秒   SELECT TO_CHAR(systimestamp,'yyyy-MM-DD HH24:MM:SSSSS') from dual

至于你插入的找不到秒,你自己看下那些数据是不是你当下插入的,也许是历史数据,还有表结构,你插入sysdate的时候是否做了时间转化等,如trunc(sysdate,'dd')



+1 这情况我也遇到过,插入的时候都是sysdate,但怎么都查不出时分秒来,原来是查询语句没写对,应该这样写:
SQL code:select to_char(tdate,'yyyy-mm-dd hh24:mi:ss') 时间 from t_tmp


四、截取掉部分  时分秒


trunc(sysdate)= trun(sysdate,'dd')截取掉时分秒,结果是2011-05-11 00:00:00
select trunc(sysdate,'mm') from dual; 截取月份,结果 2011-05-01 00:00:00
select trunc(sysdate,'yy') from dual; 截取年份,结果 2011-01-01 00:00:00

+7 是加7天
+1/24 是加 1/24 天,即一个小时

结果意思就是 一周后的凌晨1点整

select trunc(sysdate)+7+1/24 from dual; 可以看到结果

------
select trunc(sysdate-1) from dual;

 

 

0 0