登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

5.7.2 与时间戳有关的函数(2)  

2009-05-11 10:22:24|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
5.7.2 与时间戳有关的函数(2)

2. EXTRACT函数

EXTRACT函数用于从x中提取并返回年、月、日、时、分、秒或时区,其中x可以是时间戳类型或DATE类型。下面这个查询使用EXTRACT函数从由TO_DATE()返回的DATE类型中提取年、月、日:

 SELECT
EXTRACT(YEAR FROM TO_DATE('01-JAN-2008 19:15:26',
'DD-MON-YYYY HH24:MI:SS')) AS YEAR,
EXTRACT(MONTH FROM TO_DATE('01-JAN-2008 19:15:26',
'DD-MON-YYYY HH24:MI:SS')) AS MONTH,
EXTRACT(DAY FROM TO_DATE('01-JAN-2008 19:15:26',
'DD-MON-YYYY HH24:MI:SS')) AS DAY
FROM dual;       YEAR       MONTH           DAY
---------- ---------- ----------
 2008            1             1

下面这个查询使用EXTRACT函数从由TO_TIMESTAMP()返回的TIMESTAMP类型中提取时、分、秒:

 SELECT
EXTRACT(HOUR FROM TO_TIMESTAMP('01-JAN-2008 19:15:26',
'DD-MON-YYYY HH24:MI:SS')) AS HOUR,
EXTRACT(MINUTE FROM TO_TIMESTAMP('01-JAN-2008 19:15:26',
'DD-MON-YYYY HH24:MI:SS')) AS MINUTE,
EXTRACT(SECOND FROM TO_TIMESTAMP('01-JAN-2008 19:15:26',
'DD-MON-YYYY HH24:MI:SS')) AS SECOND
FROM dual;      HOUR       MINUTE       SECOND
---------- ---------- ----------
19            15            26

最后这个查询使用EXTRACT函数从由TO_TIMESTAMP_TZ()返回的TIMESTAMP WITH TIMEZONE类型中提取时区的时、分、秒、区域和时区缩写:

 SELECT
EXTRACT(TIMEZONE_HOUR FROM TO_TIMESTAMP_TZ(
'01-JAN-2008 19:15:26 -7:15', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'))
AS TZH,
EXTRACT(TIMEZONE_MINUTE FROM TO_TIMESTAMP_TZ(
'01-JAN-2008 19:15:26 -7:15', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'))
AS TZM,
EXTRACT(TIMEZONE_REGION FROM TO_TIMESTAMP_TZ(
'01-JAN-2008 19:15:26 PST', 'DD-MON-YYYY HH24:MI:SS TZR'))
AS TZR,
EXTRACT(TIMEZONE_ABBR FROM TO_TIMESTAMP_TZ(
'01-JAN-2008 19:15:26 PST', 'DD-MON-YYYY HH24:MI:SS TZR'))
AS TZA
FROM dual;        TZH          TZM   TZR                   TZA
---------- ---------- ----------- ----------
  -7          -15   PST                    PST

3. FROM_TZ()

FROM_TZ(x, time_zone)将TIMESTAMP类型的x转换为由time_zone指定的时区,并返回TIMESTAMP WITH TIMEZONE类型。time_zone必须被指定为+|- HH:MI格式的字符串。此函数一般将x和time_zone合并成一个值。

例如,下面这个查询将时间戳2008-05-13 07:15:31.1234和与UTC的时差-7:00合并起来:

 SELECT FROM_TZ(TIMESTAMP '2008-05-13 07:15:31.1234', '-7:00')
FROM dual;FROM_TZ(TIMESTAMP'2008-05-1307:15:31.1234','-7:00')
---------------------------------------------------
13-MAY-08 07.15.31.123400000 AM -07:00

4. SYS_EXTRACT_UTC()

SYS_EXTRACT_UTC (x)用于将TIMESTAMP WITH TIMEZONE类型的x转换为一个包含UTC时区日期和时间的TIMESTAMP类型。

下面这个查询将2008-11-17 19:15:26 PST转换为UTC:

 SELECT SYS_EXTRACT_UTC(TIMESTAMP '2008-11-17 19:15:26 PST')
FROM dual;SYS_EXTRACT_UTC(TIMESTAMP'2008-11-1719:15:26PST')
-------------------------------------------------
18-NOV-08 03.15.26.000000000 AM

因为在冬季PST比UTC晚8个小时,因此这个查询返回的TIMESTAMP类型的值比2008-11-17 19:15:26 PST早了8个小时,即18-NOV-08 03.15.26 AM.。

如果是在夏季,则返回的TIMESTAMP类型的值只比UTC早7个小时。

 SELECT SYS_EXTRACT_UTC(TIMESTAMP '2008-05-17 19:15:26 PST')
FROM dual;SYS_EXTRACT_UTC(TIMESTAMP'2008-05-1719:15:26PST')
-------------------------------------------------
18-MAY-08 02.15.26.000000000 AM

Copyright©2005-2009 51CTO.COM 版权所有



引文来源  5.7.2 与时间戳有关的函数(2) - 51CTO.COM
  评论这张
 
阅读(209)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018