alter session set nls_date_format='YYYY-MM-DD';
select add_monthS('2014-11-15',12) from dual;
--增加12个月份以后的时间,可以是负值 负值为过去的时间
select last_day('2014-11-21') from dual;
--返回当前月份的最后一天的时间
select months_between('2014-11-21','2014-05-20') from dual;
--返回两个时间相差几个月 若想结果为正 则稍晚的时间必须在前面
select next_day('2014-11-21',2) from dual;
--返回下周的第几天 按照老外的习惯 周日为第一天
select round(to_date('2014-11-21'),'YYYY') from dual;
2015-01-01
select round(to_date('2014-11-21'),'MM') from dual;
2014-12-01
select TO_CHAR(round(to_date('2014-11-21 15:16:30','YYYY-MM-DD HH24:MI:SS'),'HH24'),'YYYY-MM-DD HH24:MI:SS')
from dual;
--对时间进行取整
select sysdate from dual;
--返回数据库服务器的操作系统中设置的时间
SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24-MM-DD') FROM DUAL;
select TRUNC(TO_DATE('2014-11-21'),'YYYY') FROM DUAL;
2014-01-01
select TRUNC(TO_DATE('2014-11-21'),'MM') FROM DUAL;
2014-11-01
select TO_CHAR(TRUNC(TO_DATE('2014-11-21 15:16:30','YYYY-MM-DD HH24:MI:SS'),'HH24'),'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
--截取时间 按年 月 日
UTC:协调世界时间
EST:美国东部时间 -05:00
PST:太平洋标准时间 -08:00
--与时区有关的函数
select dbtimezone from dual;
+00:00
--返回当前数据库的时区
会话时区
alter session set time_zone='Asia/Shanghai';
--更改时区
select sessiontimezone from dual;
Asia/Shanghai
--查看当前会话的时区
select current_date from dual;
--查看当前会话中的时间
select TZ_OFFSET('PST') FROM DUAL;
-08:00
--查看时间差
select * from v$timezone_names
where rownum<5 order by tzabbrev;
Africa/Abidjan GMT
Africa/Accra GMT
Africa/Accra LMT
Africa/Abidjan LMT
show user;
SELECT TO_DATE(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
2014-11-21
--转换时区
select to_char(new_time(to_date('2014-11-21 16:09:21','YYYY-MM-DD HH24:MI:SS'),'PST','EST'),'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
PST比EST晚3个小时
timestamp:存储秒的小数位
timestamp with time zone:用于存储时区
timestamp with local time zone:将给定的时间转换成数据库本地时区
如果数据库已经实现全球 那么存储时间的类型就必须为它
select current_timestamp,localtimestamp,systimestamp from dual;
select add_monthS('2014-11-15',12) from dual;
--增加12个月份以后的时间,可以是负值 负值为过去的时间
select last_day('2014-11-21') from dual;
--返回当前月份的最后一天的时间
select months_between('2014-11-21','2014-05-20') from dual;
--返回两个时间相差几个月 若想结果为正 则稍晚的时间必须在前面
select next_day('2014-11-21',2) from dual;
--返回下周的第几天 按照老外的习惯 周日为第一天
select round(to_date('2014-11-21'),'YYYY') from dual;
2015-01-01
select round(to_date('2014-11-21'),'MM') from dual;
2014-12-01
select TO_CHAR(round(to_date('2014-11-21 15:16:30','YYYY-MM-DD HH24:MI:SS'),'HH24'),'YYYY-MM-DD HH24:MI:SS')
from dual;
--对时间进行取整
select sysdate from dual;
--返回数据库服务器的操作系统中设置的时间
SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24-MM-DD') FROM DUAL;
select TRUNC(TO_DATE('2014-11-21'),'YYYY') FROM DUAL;
2014-01-01
select TRUNC(TO_DATE('2014-11-21'),'MM') FROM DUAL;
2014-11-01
select TO_CHAR(TRUNC(TO_DATE('2014-11-21 15:16:30','YYYY-MM-DD HH24:MI:SS'),'HH24'),'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
--截取时间 按年 月 日
UTC:协调世界时间
EST:美国东部时间 -05:00
PST:太平洋标准时间 -08:00
--与时区有关的函数
select dbtimezone from dual;
+00:00
--返回当前数据库的时区
会话时区
alter session set time_zone='Asia/Shanghai';
--更改时区
select sessiontimezone from dual;
Asia/Shanghai
--查看当前会话的时区
select current_date from dual;
--查看当前会话中的时间
select TZ_OFFSET('PST') FROM DUAL;
-08:00
--查看时间差
select * from v$timezone_names
where rownum<5 order by tzabbrev;
Africa/Abidjan GMT
Africa/Accra GMT
Africa/Accra LMT
Africa/Abidjan LMT
show user;
SELECT TO_DATE(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
2014-11-21
--转换时区
select to_char(new_time(to_date('2014-11-21 16:09:21','YYYY-MM-DD HH24:MI:SS'),'PST','EST'),'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
PST比EST晚3个小时
timestamp:存储秒的小数位
timestamp with time zone:用于存储时区
timestamp with local time zone:将给定的时间转换成数据库本地时区
如果数据库已经实现全球 那么存储时间的类型就必须为它
select current_timestamp,localtimestamp,systimestamp from dual;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29749380/viewspace-1347200/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29749380/viewspace-1347200/