Oracle 10g日期时间函数

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 23:29 点击:

--add_months(d,n):返回特定日期时间d之后或之前的n个月所对应的日期时间。n为正整数表示之后,n为负整数表示之前
select add_months(sysdate, -5) from dual;输出:2010-08-26 13:24:28
 
--current_date:返回当前会话时区所对应的日期时间
select current_date from dual; 输出:2011-01-26 13:32:28
 
--current_timestamp:返回当前会话时区的日期时间
select current_timestamp from dual;输出:26-1月 -11 01.35.25.996000 下午 +08:00
 
--localtimestamp:返回当前会话时区的日期时间
select localtimestamp from dual;输出:26-1月 -11 02.10.39.209000 下午
 
--systimestamp:返回当前系统的日期时间及时区
select systimestamp from dual;输出:26-1月 -11 02.50.46.030000 下午 +08:00
 
--to_timestamp(char[fmt[,'nls_param']])用于将符合特定日期和时间格式的字符串转变为timestamp类型
select to_timestamp('11-1月-26') from dual;输出:11-1月 -26 12.00.00.000000000 上午
 
--to_timestamp_tz(char[fmt[,'nls_param'])用于将符合日期和时间格式的字符串转变为timestamp with time zone类型
select to_timestamp_tz('2011-01-26','YYYY-MM-DD') from dual;输出:26-1月 -11 12.00.00.000000000 上午 +08:00
 
--dbtimezone:返回数据库所在时区
select dbtimezone from dual;输出:+00:00
 
--sessiontimezone:返回当前会话所在时区
select sessiontimezone from dual;输出:+08:00
 
--extract:用于从日期时间值中取得所需要的特定数据
select extract(year from sysdate) from dual;输出:2011
 
--from_dz:用于将特定时区的timestamp值转变为timestamp with time zone值
select from_tz(to_timestamp('20091101', 'YYYYMMDD'), 'America/Sao_Paulo')  from dual;第一次运行出现ORA-01878:在日期时间或间隔中没有找到指定的字段,然后换个日期比如:20110101,就不会有问题。如果有问题,可以使用下面的SQL语句可以避免夏令时造成的异常。
select from_tz(to_timestamp('20110101', 'YYYYMMDD'),               tz_offset('America/Sao_Paulo')) at time zone 'America/Sao_Paulo'  from dual;输出:01-1月 -11 12.00.00.000000000 上午 AMERICA/SAO_PAULO
 
--last_day:返回特定日期所在月份的最后一天
select last_day(sysdate) from dual;输出:2011-01-31 14:06:03
 
--months_between(d1,d2):返回日期d1和d2之间相差的月数;如果d1小于d2,则返回负数;如果日期d1和d2的天数相同或都是月底,则返回整数;否则Oracle以每月31天为准来计算结果的小数部分
select months_between(sysdate,                      to_date('2011-2-26 10:00:00', 'yyyy-MM-dd hh24:mi:ss'))  from dual;输出:-1
select months_between(sysdate,                      to_date('2010-12-20 10:00:00', 'yyyy-MM-dd hh24:mi:ss'))  from dual;输出:1.1993167562724
 
--new_time(date,zone1,zone2)返回时区一的日期时间所对应的时区二的日期时间
select new_time(sysdate, 'EST', 'PST') from dual;输出:2011-01-26 11:19:59
 
--next_day(d,char):返回指定日期后的第一个工作日所对应的日期
select next_day(sysdate,'星期一') from dual;输出:2011-01-31 14:23:03
 
--round(d[,fmt])返回日期时间的四舍五入结果。如果fmt指定年度,则7月1日为分界线;如果fmt指定月,则16日为分界线;如果指定天,则中午12:00时为分割线
select round(sysdate, 'year') from dual;输出:2011-01-01
select round(sysdate, 'month') from dual;输出:2011-02-01
select round(sysdate, 'day') from dual;输出:2011-01-30
 
--trunc(d,[fmt])用于截取日期时间数据。如果fmt指定年度,则结果为本年度的1月1日;如果fmt指定月,则结果为本月1日
select trunc(sysd

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Table函数使用简介
      • Oracle数据库Constraint约束的常用操作及异常处理
      • Bulk Collect性能分析(zz)
      • export/import的使用
      • OCP043第十五讲 Database Security
      • ORACLE10gr2数据导入MySQL方案
      • oracle 让sys用户可以使用isqlplus
      • 在oracle数据库下使用iSQL*Plus DBA访问数据库
      • Oracle行列转换小结
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1