文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Oracle 10g SQL函数:日期时间函数

Oracle 10g SQL函数:日期时间函数

时间:2011-01-26  来源:mxcjwl314

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(sysdate, 'year') from dual;

输出:2011-01-01

 

select trunc(sysdate, 'month') from dual;

输出:2010-01-01

 

 

--tz_offset(time_zone_name||sessiontimezone||dbtimezone):用于返回特定时区与UTC(格林威治)相比的时区偏移

select tz_offset('EST') from dual;
输出:-05:00

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载