Oracle 10g日期时间函数
--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
相关新闻>>
- 发表评论
-
- 最新评论 更多>>