您的位置:首页 > 数据库 > Oracle

[转]Oracle EXTRACT()函数与to_char() 函数

2008-10-24 08:30 495 查看
转自:/article/6457289.html

EXTRACTextractsandreturnsthevalueofaspecifieddatetimefieldfromadatetimeorintervalvalueexpression.

Thefieldyouareextractingmustbeafieldofthe
datetime_value_expr
or
interval_value_expr
.Forexample,youcanextractonly
YEAR
,
MONTH
,and
DAY
froma
DATE
value.Likewise,youcanextract
TIMEZONE_HOUR
and
TIMEZONE_MINUTE
onlyfromthe
TIMESTAMP
WITH
TIME
ZONE
datatype.

eg.

SELECTEXTRACT(
YEAR
FROMSYSDATE)FROMDUAL;returnCurrentYear

SELECTEXTRACT(
MONTH
FROMSYSDATE)FROMDUAL;returnCurrentMonth

SELECTEXTRACT(
DAY
FROMSYSDATE)FROMDUAL;returnCurrentDay

SELECTEXTRACT(
HOUR
FROMSYSDATE)FROMDUAL;Error

Correct:SELECTEXTRACT(
HOUR
FROM
TIMESTAMP'2005-10-1010:10:10')FROMDUAL;



SELECTEXTRACT(
MINUTE
FROMSYSDATE)FROMDUAL;Error

Correct:SELECTEXTRACT(
MINUTE
FROM
TIMESTAMP'2005-10-1010:10:10')FROMDUAL;


以上是EXTRACT()函数的使用说明,英文部分有个很重要的部分.就是extract抽取年月日部分和时分部分的使用方法是不同的.

EXTRACT(
YEAR
FROMSYSDATE)中FROM的下一个参数是日期类型的时候可以抽取年月日.就是说这个参数是日期类型的时候就可以抽取年\月\日,而抽取不了时\分部分.抽取时分部分得在FROM后面加带TIMESTAMP且后面加时间字符.

这里要注意,在(
MINUTE
FROM
TIMESTAMP'2005-10-1010:10:10')中,如果把'2005-10-1010:10:10'用日期类型的字段来代替并转换成字符类型后,也是错误的,估计是这方法的问题.

比如(MINUTE
[code]
FROM
TIMESTAMPto_date(to_char(日期类型,'YYYY-MM-DDhh24:mi:ss'),'YYYY-MM-DDhh24:mi:ss')),这样执行不了的.

如果真要从日期类型的字段中抽取时\分部分用to_char()函数就可以了.比如to_char(日期类型,'hh24:mi')

完毕!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: