1、year(exp):取exp的year部分。
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型,则将会被转换为字符串,再取值。
返回值:large integer类型;
若参数为null,返回值也为null
若参数为date,timestamp,有效的date或者timestamp字符串,返回值范围[1 — 9999]
若为日期间隔或时间戳间隔,则返回值范围[-9999 — 9999]
values (year(date('1990-01-01')-sysdate), --日期间隔
sysdate, --系统日期
year(sysdate), --取系统日期的年部分
year(current timestamp), --取当前时间戳的年部分
current timestamp) --当前时间戳
1 2 3 4 5
----------- ------------------- ----------- ----------- --------------------------
-23 2013-03-25-09.53.49 2013 2013 2013-03-25-09.53.49.163000
1 条记录已选择。
2、month(exp):取exp的month部分。
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型(除了DBCLOB类型),则将会被转换为字符串,再取值。
返回值:large integer类型;
若exp为null,返回值也为null
若参数为date,timestamp,有效的date或者timestamp字符串,返回值范围[1 — 12]
若参数为日期间隔或者时间戳间隔,返回值的范围[-99 — 99]
values (sysdate,
month(sysdate),
month(date('2013-01-01')-date('1900-5-01')),
month(date('2000-02-01')-date('2010-01-01')))
1 2 3 4
------------------- ----------- ----------- -----------
2013-03-25-10.11.36 3 8 -11
1 条记录已选择。
3、day(exp):返回exp的day部分。
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型(除了DBCLOB类型),则将会被转换为字符串,再取值。
返回值:large integer类型;
若exp为null,返回值也为null
若参数为date,timestamp,有效的date或者timestamp字符串,返回值范围[1 — 31]
若参数为日期间隔或者时间戳间隔,返回值的范围[-99 — 99]
values (day(date('2000-03-15')-date('1999-12-31')),
day(date('1900-01-01-00.00.00')-sysdate),
sysdate)
1 2 3
----------- ----------- -------------------
15 -24 2013-03-25-10.24.41
1 条记录已选择。
相关函数:
days(exp):返回exp与date('0001-01-01')之间的天数
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型(除了DBCLOB类型),则将会被转换为字符串,再取值。
返回值:large integer类型。
values (sysdate,
days(sysdate)/365,
days(date('2000-01-01')),
days(date('2000-01-01'))/365)
1 2 3 4
------------------- ----------- ----------- -----------
2013-03-25-10.41.56 2013 730120 2000
1 条记录已选择。
4、hour(exp):取exp的hour部分。
参数:exp允许的类型如下:
有效的datetime形式的字符串,非CLOB类型。
time或者timestamp间隔。
返回值:large integer类型。
若参数为null,则返回null。
若参数为time,timestamp,或者有效的time或timestamp形式的字符串,则返回值范围[0 — 24]。
若参数为date,或者有效的date形式的字符串,则返回0。
若参数为time或者timestamp间隔的话,则返回值范围[-99 — 99]
values (hour(current time),
current time,
hour('12:10:01'),
hour(time('10:10:10')-time('22:10:10')),
hour(current timestamp-timestamp('2010-01-01-10.10.10.000000')))
1 2 3 4 5
----------- -------- ----------- ----------- -----------
11 11:30:33 12 -12 1
1 条记录已选择。
5、minute(exp):取exp的minute部分。
参数:date、time、timestamp类型,时间间隔,时间戳间隔,
或者一个有效的date、time或者timestamp字符串(非CLOB类型)。
若参数为date类型,首先先转换为timestamp(0)类型(00.00.00)。
返回值:large integer类型。
参数为null,返回值为null。
若参数为date、time、timestamp,或者一个有效的字符串,返回值范围[0 — 59]。
若参数为时间或者时间戳间隔,返回值范围[-99 — 99]。
values (minute(date('2012-01-01')),
minute(current time),
minute(time('00:00:10')-time('14:59:10')),
minute(time('05:59:59')-time('01:01:01')),
minute(current timestamp))
1 2 3 4 5
----------- ----------- ----------- ----------- -----------
0 46 -59 58 46
1 条记录已选择。
6、second(exp1[,exp2]):取exp1的second部分,小数点长度为exp2。
参数:exp1:date,time,timestamp,时间间隔或者时间戳间隔,或者有效的字符串(非clob、dblob);
字符串的首位空格先被移除,在进行转换为相应的日期时间值。
若为date类型,默认被转换为timestamp(0)。
exp2:范围[0 — 12],表示结果的小数点位数,若有此参数,结果的精度为decimal(2+exp2,exp2)。
返回值:若exp1为date,time,timestamp或者有效的字符串,只有exp1参数,返回值范围[0 — 59];
如果exp1,exp2都存在,则返回值整数部分的范围[0 - 59],小数部分长度由exp2决定。
若exp1为时间间隔或者时间戳间隔,只有exp1参数,返回值范围[-99 - 99];
如果两个参数都有,返回值的整数部分范围[-99 - 99],小数部分,小数部分由exp2决定。
db2 => values (second(current timestamp,3),second(current timestamp,6),second(time'12:12:14'))
1 2 3
------- ---------- -----------
52.172 52.172000 14
1 条记录已选择。
7、microsecond(exp):取exp的microsecond部分。
参数:date、timestamp,时间戳间隔,或者有效的日期、时间戳字符串(char或者varchar)。
若参数为date类型,首先先转换为timestamp(0)类型(00.00.00)。
返回值:large integer类型。
若参数为null,返回值也为null。
若参数为date、timestamp,或者有效的日期、时间戳字符串,返回值范围[0 — 999999],
时间戳精度超过6的,将会被截取。
若参数为时间戳间隔,返回值范围[-999999 — 999999]
values (microsecond(current timestamp),
current timestamp,
microsecond(current date),
microsecond(timestamp('2013-01-01-12.20.59.123456')))
1 2 3 4
----------- -------------------------- ----------- -----------
848000 2013-03-25-15.17.04.848000 0 123456
1 条记录已选择。
8、quarter(exp):返回季度。
参数:date,timestamp,或者有效的date、timestamp字符串(非clob)。
返回值:integer类型,范围[1 - 4]
values (quarter(sysdate),
quarter(date('2012-12-03')),
quarter(timestamp('2013-08-08-12.25.10.123000')))
1 2 3
----------- ----------- -----------
1 4 3
1 条记录已选择。
9、week(exp):返回当年的第几周。
参数:date,timestamp类型,或者有效的字符串(表示date,或timestamp)(非clob类型)。
返回值:integer类型,范围[1 - 54)
若参数为null,则返回值为null。
计算起始为周日★。
db2 => values (week(current date),week(timestamp('2013-12-20-10.25.59.123000')))
1 2
----------- -----------
13 51
1 条记录已选择。
相关函数:
week_iso(exp):取exp中当年的第几周。
参数:date,timestamp,或者有效的字符串(表示date,或者timestamp),非clob。
返回值:integer类型,
若参数为null,返回值也为null。
返回值范围[1 - 53),
从周一开始计算★(年初或年末的几天将会计入当年或者下一年)。
values (week('2012-12-31'),
week_iso('2012-12-31'),
week_iso('2012-01-04'),
week_iso('2012-01-01'),
week_iso('2012-01-02'))
1 2 3 4 5
----------- ----------- ----------- ----------- -----------
53 1 1 52 1
1 条记录已选择。
10、dayofyear(exp):取exp是当年中的第几天。
参数:date、timestamp,有效的表示date或timestamp类型的字符串,非clob类型。
返回值:integer类型。
若参数为null,返回值也为null。
db2 => values (dayofyear(sysdate),sysdate)
1 2
----------- -------------------
84 2013-03-25-18.22.07
1 条记录已选择。
11、dayofweek(exp):取exp所在的那个周的第几天。
参数:date,timestamp,或者有效的表示date或timestamp类型的字符串,非clob类型。
返回值:integer类型
若参数为null,返回null
返回值范围[1 - 7],周日为第一天,周六为第七天。
db2 => values (dayofweek('2013-03-24'),dayofweek(sysdate),dayofweek(sysdate + 5 days))
1 2 3
----------- ----------- -----------
1 2 7
1 条记录已选择。
dayofweek_iso(exp):取exp所在的那个周的第几天。
参数:date,timestamp,或者有效的表示date或timestamp类型的字符串,非clob类型。
返回值:integer类型
若参数为null,返回null
返回值范围[1 - 7],周一为第一天,周日为第七天。
db2 => values (sysdate,dayofweek(sysdate),dayofweek(sysdate + 5 days),dayofweek('2013-03-30-12.10.12.123000'))
1 2 3 4
------------------- ----------- ----------- -----------
2013-03-25-18.35.28 2 7 7
1 条记录已选择。
12、dayname(exp[,local_name]):取exp当天在一周中的第几天(monday,tuesday,...,sunday)
参数:date、timestamp类型,或者有效的表示date、timestamp类型的字符串,非clob类型。
★local_name:指定不同的语言环境,例如,西班牙语为“es”,英语为“en”,而法语为“fr”;默认为寄存器CURRENT LOCALE LC_TIME的值。
CURRENT LOCALE LC_TIME
返回值:星期的英文表示
db2 => values (dayname(current timestamp,'CLDR 1.5:en_US'))
1
------------------------------------------------------------
Tuesday
1 条记录已选择。
db2 => values (dayname(current timestamp,'CLDR 1.5:en_FR'))
1
------------------------------------------------------------
Tuesday
1 条记录已选择。
db2 => values (dayname(current timestamp,'CLDR 1.5:en_DE'))
1
------------------------------------------------------------
Tuesday
1 条记录已选择。
13、add_months(exp,n):在日期exp上面加上n个月。
参数:date或者timestamp类型,
n为integer类型,若非integer类型,在进行计算的时候,将会被隐式转换为integer类型。
返回值:一个date或者timestamp值。
只改变月份部分和年部分,时分秒或者毫秒不受影响。
values (current timestamp,
add_months(current timestamp,2),
add_months(date('2012-12-01'),2),
sysdate + 2 months)
1 2 3 4
-------------------------- -------------------------- ---------- -------------------
2013-03-26-06.40.07.390000 2013-05-26-06.40.07.390000 2013-02-01 2013-05-26-06.40.07
1 条记录已选择。
14、months_between(exp1,exp2):取两个日期之间的月份间隔。★
参数:date,timestamp类型。
返回值:返回值为decimal(31,15)。
exp1>exp2,结果为正数;否则为负数。
values (months_between(timestamp('2007-11-01-09.00.00.00000'),
timestamp('2007-12-07-14.30.12.12345')))
1
---------------------------------
-1.200945386592741
1 条记录已选择。
values (months_between(timestamp('2007-11-01-09.00.00.00000'),
timestamp('2007-12-07-14.30.12.12345')) * 31)
1
---------------------------------
-37.229306984374971
1 条记录已选择。
months_bewteen函数的具体细节:
MONTHS_BEWTEEN
15、last_day(exp):取exp表示的日期当月的最后一天。
参数:date、timestamp类型。
返回值:与参数相同
values (last_day(current timestamp),current date,last_day(current date),last_day('2013-02-21'))
1 2 3 4
-------------------------- ---------- ---------- ----------
2013-03-31-09.23.42.146000 2013-03-26 2013-03-31 2013-02-28
1 条记录已选择。
16、next_day(exp,dt[,local_name]):取下一个dt(dt表示从周一到周五)日期。
参数:exp:date、timestamp类型。
dt:MONDAY(MON),TUESDAY(TUE),WENDESDAY(WED),THURSDAY(THU),
FRIDAY(FRI),SATURDAY(SAT),SUNDAY(SUN)。
local_name:区域指定标识。★
返回值:类型与exp相同。
values (current date,
next_day(current date,'MON'),
next_day(date('2013-01-01'),'sat'),
next_day(current_timestamp,'tuesday'))
1 2 3 4
---------- ---------- ---------- --------------------------
2013-03-26 2013-04-01 2013-01-05 2013-04-02-09.35.24.116000
1 条记录已选择。
17、timestampdiff(exp1,exp2):计算两个时间戳之间相隔的年、季度、周、天、小时、分钟、秒。
参数:exp1,integer或者smallint类型,可以是如下的值:
1:秒的小数
2:秒数
4:分钟数
8:小时数
16:天数
32:周数
64:月数
128:季度数
256:年数
exp2:转换为字符串的两个时间戳相减得到的结果 —— char(22)。
返回值:integer类型。
参数值为null,返回值也为null。
在对参数exp2进行计算的时候,必须遵循下面的规则:
1年=365天
1月=30天
1天=24小时
1小时=60分钟
1分钟=60秒
忽略闰年
values (timestampdiff(2,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
2159834 --秒数
1 条记录已选择。
values (timestampdiff(4,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
35997 --分钟数
1 条记录已选择。
values (timestampdiff(8,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
599 --小时数
1 条记录已选择。
values (timestampdiff(16,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
24 --天数
1 条记录已选择。
values (timestampdiff(32,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
3 --周数
1 条记录已选择。
values (timestampdiff(64,char(timestamp('2014-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
12 --月数
1 条记录已选择。
values (timestampdiff(128,char(timestamp('2014-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
4 --季度
1 条记录已选择。
values (timestampdiff(256,char(timestamp('2015-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
2 --年
1 条记录已选择。
18、timestamp(exp[,len]):取exp表示的timestamp。
参数:exp:可以是date、timestamp类型,或者有效的表示date或timestamp类型的字符串。
len:可选,表示毫秒的长度。
返回值:返回exp表示的timestamp。
若参数为date类型或者date字符串,则时、分、秒、毫秒部分都为0。
若参数为timestamp或者timestamp字符串,则返回exp按照当前默认格式转换之后的值。
values (timestamp('2012-01-01',2),
timestamp('2013-01-01-10.10.10.123456'),
timestamp(current date),
timestamp(sysdate,9))
1 2 3 4
---------------------- -------------------------- ------------------- -----------------------------
2012-01-01-00.00.00.00 2013-01-01-10.10.10.123456 2013-03-26-00.00.00 2013-03-26-11.19.07.000000000
1 条记录已选择。
timestamp_iso(exp):返回exp的timestamp形式。
参数:date,time,timestamp,char或varchar字符串(表示有效的日期、时间、时间戳)。
返回值:参数为date类型,timestamp类型的结果,时分秒毫秒全部为0。
参数为time类型,结果日期为当前日期,毫秒为0。
参数为timestamp类型,返回exp按照当前默认格式转换之后的值。
values (timestamp_iso(time('10:10:10')),
timestamp_iso('2013-01-01'),
timestamp_iso(current timestamp),
timestamp_iso('2013-03-26-10.12.10.123456'))
1 2 3 4
-------------------------- -------------------------- -------------------------- --------------------------
2013-03-26-10.10.10.000000 2013-01-01-00.00.00.000000 2013-03-26-13.53.20.809000 2013-03-26-10.12.10.123456
1 条记录已选择。
19、varchar_format(exp,format[,locale_name]):这里指讨论此函数将时间戳转换为字符串的问题。
exp:date、timestamp类型,在进行转换之前,date类型的参数将会被转换为timestamp(0)类型。
format:格式有多种,具体看下面实例。
locale_name:区域标识符号,若未指定的话,使用寄存器current lc_time的值,查看:values (current lc_time)。
实例:
tmstamp=timestamp(' 2007-03-09-14.07.38.123456')
Function invocation Result
------------------- ------
VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMISSFF3') 20070309020738123
VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHH24MISS') 20070309140738
VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMI') 200703090207
VARCHAR_FORMAT(TMSTAMP,'DD/MM/YY') 09/03/07
VARCHAR_FORMAT(TMSTAMP,'MM-DD-YYYY') 03-09-2007
VARCHAR_FORMAT(TMSTAMP,'J') 2454169
VARCHAR_FORMAT(TMSTAMP,'Q') 1
VARCHAR_FORMAT(TMSTAMP,'W') 2
VARCHAR_FORMAT(TMSTAMP,'IW') 10
VARCHAR_FORMAT(TMSTAMP,'WW') 10
VARCHAR_FORMAT(TMSTAMP,'Month','en_US') March
VARCHAR_FORMAT(TMSTAMP,'MONTH','en_US') MARCH
VARCHAR_FORMAT(TMSTAMP,'MON','en_US') MAR
VARCHAR_FORMAT(TMSTAMP,'Day','en_US') Friday
VARCHAR_FORMAT(TMSTAMP,'DAY','en_US') FRIDAY
VARCHAR_FORMAT(TMSTAMP,'Dy','en_US') Fri
VARCHAR_FORMAT(TMSTAMP,'Month','de_DE') M?rz
VARCHAR_FORMAT(TMSTAMP,'MONTH','de_DE') M?RZ
VARCHAR_FORMAT(TMSTAMP,'MON','de_DE') MRZ
VARCHAR_FORMAT(TMSTAMP,'Day','de_DE') Freitag
VARCHAR_FORMAT(TMSTAMP,'DAY','de_DE') FREITAG
VARCHAR_FORMAT(TMSTAMP,'Dy','de_DE') Fr
to_nchar()类似于varchar_format()函数。
to_char()类似varchar_format()函数。
20、★timestamp_format(str,format):取字符串str的format格式的timestamp类型。
参数:str为char或者varchar类型;
format:时间戳的格式。
返回值:timestamp类型;
db2 => values (timestamp_format('2012/12/12 15:10:10.123456','yyyy-mm-dd hh24:mi:ss.ff'))
1
--------------------------
2012-12-12-15.10.10.123456
1 条记录已选择。
更多细节:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0007107.html
相关函数:
to_timestamp()
to_date()
21、extract():取日期、时间或者时间戳的指定部分。有两种形式:
1.从日期或者时间戳中取年月日天。
extract(year|month|day from exp)
参数:year、month、day为固定参数,表示取的值;
exp:date或者timestamp类型。
values (current_timestamp,
extract(year from current_timestamp),
extract(month from current_timestamp),
extract(day from current_timestamp))
1 2 3 4
-------------------------- ----------- ----------- -----------
2013-03-26-14.02.38.323000 2013 3 26
1 条记录已选择。
values (extract(year from '2013-03-26'),
extract(month from '2013-01-03'),
extract(day from '2012-01-30'))
1 2 3
----------- ----------- -----------
2013 1 30
1 条记录已选择。
2.从时间或者时间戳中取时分秒。
extract(hour|minute|second from exp)
参数:hour、minute、second为固定值,表示取的值;
exp:time或者timestamp类型。
values (current_time,
extract(minute from current_time),
extract(hour from '15:23:21'),
extract(second from current_timestamp))
1 2 3 4
-------- ----------- ----------- ----------
14:09:18 9 15 18.885000
1 条记录已选择。
extract()函数的返回值:
1.指定取year、month、day、hour、minut,则返回integer类型。
2.对于timestamp(p)类型的值,second值的类型为decimal(2+p,p)。
3.对于time类型,或者有效的表示time或者timestamp类型的字符串,则second的为decimal(8,6)类型。
db2 => values (extract(second from current_timestamp(2)),extract(second from '2013-03-26-14.20.20.123456'))
1 2
------ ----------
13.83 20.123456
1 条记录已选择。
22、truncate(exp,format[,local_name])(或者trunc())
参数:exp:date、time、timestamp类型,不支持有效的时间日期类型的字符串,必须使用cast或者相应的函数进行转换。
format:截取保留的部分,如下:
year|yyyy:截取到年部分;
month|mon|mm:截取到月部分;
day|dy|d:截取到当前日期的本周起始日期;
ddd|dd|DD:截取到当天,默认值;
hh:截取到小时部分;
minute|mi:截取到分钟;
ss:截取到秒;
local_name:常量,在format为day,dy或者d的时候,指定一周的起始。
values (current_timestamp, --2013-03-26-15.50.39.589000
trunc(current_timestamp,'year'), --2013-01-01-00.00.00.000000
trunc(current_timestamp,'month'), --2013-03-01-00.00.00.000000
trunc(current_timestamp,'day'), --2013-03-24-00.00.00.000000
trunc(current_timestamp,'dd'), --2013-03-26-00.00.00.000000
trunc(current_timestamp,'hh'), --2013-03-26-15.00.00.000000
trunc(current_timestamp,'minute'), --2013-03-26-15.50.00.000000
trunc(current_timestamp,'ss'), --2013-03-26-15.50.39.000000
trunc(timestamp('2013-03-26-15.50.39.589000')) --2013-03-26-00.00.00.000000
)
相关函数:TRUNC_TIMESTAMP
转载请注明出处:http://blog.csdn.net/bobo12082119/article/details/8724583
--the end--
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型,则将会被转换为字符串,再取值。
返回值:large integer类型;
若参数为null,返回值也为null
若参数为date,timestamp,有效的date或者timestamp字符串,返回值范围[1 — 9999]
若为日期间隔或时间戳间隔,则返回值范围[-9999 — 9999]
values (year(date('1990-01-01')-sysdate), --日期间隔
sysdate, --系统日期
year(sysdate), --取系统日期的年部分
year(current timestamp), --取当前时间戳的年部分
current timestamp) --当前时间戳
1 2 3 4 5
----------- ------------------- ----------- ----------- --------------------------
-23 2013-03-25-09.53.49 2013 2013 2013-03-25-09.53.49.163000
1 条记录已选择。
2、month(exp):取exp的month部分。
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型(除了DBCLOB类型),则将会被转换为字符串,再取值。
返回值:large integer类型;
若exp为null,返回值也为null
若参数为date,timestamp,有效的date或者timestamp字符串,返回值范围[1 — 12]
若参数为日期间隔或者时间戳间隔,返回值的范围[-99 — 99]
values (sysdate,
month(sysdate),
month(date('2013-01-01')-date('1900-5-01')),
month(date('2000-02-01')-date('2010-01-01')))
1 2 3 4
------------------- ----------- ----------- -----------
2013-03-25-10.11.36 3 8 -11
1 条记录已选择。
3、day(exp):返回exp的day部分。
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型(除了DBCLOB类型),则将会被转换为字符串,再取值。
返回值:large integer类型;
若exp为null,返回值也为null
若参数为date,timestamp,有效的date或者timestamp字符串,返回值范围[1 — 31]
若参数为日期间隔或者时间戳间隔,返回值的范围[-99 — 99]
values (day(date('2000-03-15')-date('1999-12-31')),
day(date('1900-01-01-00.00.00')-sysdate),
sysdate)
1 2 3
----------- ----------- -------------------
15 -24 2013-03-25-10.24.41
1 条记录已选择。
相关函数:
days(exp):返回exp与date('0001-01-01')之间的天数
参数:date、timestamp类型,日期间隔,时间戳间隔,
或者一个有效的date或者timestamp字符串(非CLOB类型)。
若为双字节的graphic类型(除了DBCLOB类型),则将会被转换为字符串,再取值。
返回值:large integer类型。
values (sysdate,
days(sysdate)/365,
days(date('2000-01-01')),
days(date('2000-01-01'))/365)
1 2 3 4
------------------- ----------- ----------- -----------
2013-03-25-10.41.56 2013 730120 2000
1 条记录已选择。
4、hour(exp):取exp的hour部分。
参数:exp允许的类型如下:
有效的datetime形式的字符串,非CLOB类型。
time或者timestamp间隔。
返回值:large integer类型。
若参数为null,则返回null。
若参数为time,timestamp,或者有效的time或timestamp形式的字符串,则返回值范围[0 — 24]。
若参数为date,或者有效的date形式的字符串,则返回0。
若参数为time或者timestamp间隔的话,则返回值范围[-99 — 99]
values (hour(current time),
current time,
hour('12:10:01'),
hour(time('10:10:10')-time('22:10:10')),
hour(current timestamp-timestamp('2010-01-01-10.10.10.000000')))
1 2 3 4 5
----------- -------- ----------- ----------- -----------
11 11:30:33 12 -12 1
1 条记录已选择。
5、minute(exp):取exp的minute部分。
参数:date、time、timestamp类型,时间间隔,时间戳间隔,
或者一个有效的date、time或者timestamp字符串(非CLOB类型)。
若参数为date类型,首先先转换为timestamp(0)类型(00.00.00)。
返回值:large integer类型。
参数为null,返回值为null。
若参数为date、time、timestamp,或者一个有效的字符串,返回值范围[0 — 59]。
若参数为时间或者时间戳间隔,返回值范围[-99 — 99]。
values (minute(date('2012-01-01')),
minute(current time),
minute(time('00:00:10')-time('14:59:10')),
minute(time('05:59:59')-time('01:01:01')),
minute(current timestamp))
1 2 3 4 5
----------- ----------- ----------- ----------- -----------
0 46 -59 58 46
1 条记录已选择。
6、second(exp1[,exp2]):取exp1的second部分,小数点长度为exp2。
参数:exp1:date,time,timestamp,时间间隔或者时间戳间隔,或者有效的字符串(非clob、dblob);
字符串的首位空格先被移除,在进行转换为相应的日期时间值。
若为date类型,默认被转换为timestamp(0)。
exp2:范围[0 — 12],表示结果的小数点位数,若有此参数,结果的精度为decimal(2+exp2,exp2)。
返回值:若exp1为date,time,timestamp或者有效的字符串,只有exp1参数,返回值范围[0 — 59];
如果exp1,exp2都存在,则返回值整数部分的范围[0 - 59],小数部分长度由exp2决定。
若exp1为时间间隔或者时间戳间隔,只有exp1参数,返回值范围[-99 - 99];
如果两个参数都有,返回值的整数部分范围[-99 - 99],小数部分,小数部分由exp2决定。
db2 => values (second(current timestamp,3),second(current timestamp,6),second(time'12:12:14'))
1 2 3
------- ---------- -----------
52.172 52.172000 14
1 条记录已选择。
7、microsecond(exp):取exp的microsecond部分。
参数:date、timestamp,时间戳间隔,或者有效的日期、时间戳字符串(char或者varchar)。
若参数为date类型,首先先转换为timestamp(0)类型(00.00.00)。
返回值:large integer类型。
若参数为null,返回值也为null。
若参数为date、timestamp,或者有效的日期、时间戳字符串,返回值范围[0 — 999999],
时间戳精度超过6的,将会被截取。
若参数为时间戳间隔,返回值范围[-999999 — 999999]
values (microsecond(current timestamp),
current timestamp,
microsecond(current date),
microsecond(timestamp('2013-01-01-12.20.59.123456')))
1 2 3 4
----------- -------------------------- ----------- -----------
848000 2013-03-25-15.17.04.848000 0 123456
1 条记录已选择。
8、quarter(exp):返回季度。
参数:date,timestamp,或者有效的date、timestamp字符串(非clob)。
返回值:integer类型,范围[1 - 4]
values (quarter(sysdate),
quarter(date('2012-12-03')),
quarter(timestamp('2013-08-08-12.25.10.123000')))
1 2 3
----------- ----------- -----------
1 4 3
1 条记录已选择。
9、week(exp):返回当年的第几周。
参数:date,timestamp类型,或者有效的字符串(表示date,或timestamp)(非clob类型)。
返回值:integer类型,范围[1 - 54)
若参数为null,则返回值为null。
计算起始为周日★。
db2 => values (week(current date),week(timestamp('2013-12-20-10.25.59.123000')))
1 2
----------- -----------
13 51
1 条记录已选择。
相关函数:
week_iso(exp):取exp中当年的第几周。
参数:date,timestamp,或者有效的字符串(表示date,或者timestamp),非clob。
返回值:integer类型,
若参数为null,返回值也为null。
返回值范围[1 - 53),
从周一开始计算★(年初或年末的几天将会计入当年或者下一年)。
values (week('2012-12-31'),
week_iso('2012-12-31'),
week_iso('2012-01-04'),
week_iso('2012-01-01'),
week_iso('2012-01-02'))
1 2 3 4 5
----------- ----------- ----------- ----------- -----------
53 1 1 52 1
1 条记录已选择。
10、dayofyear(exp):取exp是当年中的第几天。
参数:date、timestamp,有效的表示date或timestamp类型的字符串,非clob类型。
返回值:integer类型。
若参数为null,返回值也为null。
db2 => values (dayofyear(sysdate),sysdate)
1 2
----------- -------------------
84 2013-03-25-18.22.07
1 条记录已选择。
11、dayofweek(exp):取exp所在的那个周的第几天。
参数:date,timestamp,或者有效的表示date或timestamp类型的字符串,非clob类型。
返回值:integer类型
若参数为null,返回null
返回值范围[1 - 7],周日为第一天,周六为第七天。
db2 => values (dayofweek('2013-03-24'),dayofweek(sysdate),dayofweek(sysdate + 5 days))
1 2 3
----------- ----------- -----------
1 2 7
1 条记录已选择。
dayofweek_iso(exp):取exp所在的那个周的第几天。
参数:date,timestamp,或者有效的表示date或timestamp类型的字符串,非clob类型。
返回值:integer类型
若参数为null,返回null
返回值范围[1 - 7],周一为第一天,周日为第七天。
db2 => values (sysdate,dayofweek(sysdate),dayofweek(sysdate + 5 days),dayofweek('2013-03-30-12.10.12.123000'))
1 2 3 4
------------------- ----------- ----------- -----------
2013-03-25-18.35.28 2 7 7
1 条记录已选择。
12、dayname(exp[,local_name]):取exp当天在一周中的第几天(monday,tuesday,...,sunday)
参数:date、timestamp类型,或者有效的表示date、timestamp类型的字符串,非clob类型。
★local_name:指定不同的语言环境,例如,西班牙语为“es”,英语为“en”,而法语为“fr”;默认为寄存器CURRENT LOCALE LC_TIME的值。
CURRENT LOCALE LC_TIME
返回值:星期的英文表示
db2 => values (dayname(current timestamp,'CLDR 1.5:en_US'))
1
------------------------------------------------------------
Tuesday
1 条记录已选择。
db2 => values (dayname(current timestamp,'CLDR 1.5:en_FR'))
1
------------------------------------------------------------
Tuesday
1 条记录已选择。
db2 => values (dayname(current timestamp,'CLDR 1.5:en_DE'))
1
------------------------------------------------------------
Tuesday
1 条记录已选择。
13、add_months(exp,n):在日期exp上面加上n个月。
参数:date或者timestamp类型,
n为integer类型,若非integer类型,在进行计算的时候,将会被隐式转换为integer类型。
返回值:一个date或者timestamp值。
只改变月份部分和年部分,时分秒或者毫秒不受影响。
values (current timestamp,
add_months(current timestamp,2),
add_months(date('2012-12-01'),2),
sysdate + 2 months)
1 2 3 4
-------------------------- -------------------------- ---------- -------------------
2013-03-26-06.40.07.390000 2013-05-26-06.40.07.390000 2013-02-01 2013-05-26-06.40.07
1 条记录已选择。
14、months_between(exp1,exp2):取两个日期之间的月份间隔。★
参数:date,timestamp类型。
返回值:返回值为decimal(31,15)。
exp1>exp2,结果为正数;否则为负数。
values (months_between(timestamp('2007-11-01-09.00.00.00000'),
timestamp('2007-12-07-14.30.12.12345')))
1
---------------------------------
-1.200945386592741
1 条记录已选择。
values (months_between(timestamp('2007-11-01-09.00.00.00000'),
timestamp('2007-12-07-14.30.12.12345')) * 31)
1
---------------------------------
-37.229306984374971
1 条记录已选择。
months_bewteen函数的具体细节:
MONTHS_BEWTEEN
15、last_day(exp):取exp表示的日期当月的最后一天。
参数:date、timestamp类型。
返回值:与参数相同
values (last_day(current timestamp),current date,last_day(current date),last_day('2013-02-21'))
1 2 3 4
-------------------------- ---------- ---------- ----------
2013-03-31-09.23.42.146000 2013-03-26 2013-03-31 2013-02-28
1 条记录已选择。
16、next_day(exp,dt[,local_name]):取下一个dt(dt表示从周一到周五)日期。
参数:exp:date、timestamp类型。
dt:MONDAY(MON),TUESDAY(TUE),WENDESDAY(WED),THURSDAY(THU),
FRIDAY(FRI),SATURDAY(SAT),SUNDAY(SUN)。
local_name:区域指定标识。★
返回值:类型与exp相同。
values (current date,
next_day(current date,'MON'),
next_day(date('2013-01-01'),'sat'),
next_day(current_timestamp,'tuesday'))
1 2 3 4
---------- ---------- ---------- --------------------------
2013-03-26 2013-04-01 2013-01-05 2013-04-02-09.35.24.116000
1 条记录已选择。
17、timestampdiff(exp1,exp2):计算两个时间戳之间相隔的年、季度、周、天、小时、分钟、秒。
参数:exp1,integer或者smallint类型,可以是如下的值:
1:秒的小数
2:秒数
4:分钟数
8:小时数
16:天数
32:周数
64:月数
128:季度数
256:年数
exp2:转换为字符串的两个时间戳相减得到的结果 —— char(22)。
返回值:integer类型。
参数值为null,返回值也为null。
在对参数exp2进行计算的时候,必须遵循下面的规则:
1年=365天
1月=30天
1天=24小时
1小时=60分钟
1分钟=60秒
忽略闰年
values (timestampdiff(2,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
2159834 --秒数
1 条记录已选择。
values (timestampdiff(4,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
35997 --分钟数
1 条记录已选择。
values (timestampdiff(8,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
599 --小时数
1 条记录已选择。
values (timestampdiff(16,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
24 --天数
1 条记录已选择。
values (timestampdiff(32,char(timestamp('2013-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
3 --周数
1 条记录已选择。
values (timestampdiff(64,char(timestamp('2014-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
12 --月数
1 条记录已选择。
values (timestampdiff(128,char(timestamp('2014-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
4 --季度
1 条记录已选择。
values (timestampdiff(256,char(timestamp('2015-03-26-10.07.24.123456')-timestamp('2013-03-01-10.10.10.123000'))))
1
-----------
2 --年
1 条记录已选择。
18、timestamp(exp[,len]):取exp表示的timestamp。
参数:exp:可以是date、timestamp类型,或者有效的表示date或timestamp类型的字符串。
len:可选,表示毫秒的长度。
返回值:返回exp表示的timestamp。
若参数为date类型或者date字符串,则时、分、秒、毫秒部分都为0。
若参数为timestamp或者timestamp字符串,则返回exp按照当前默认格式转换之后的值。
values (timestamp('2012-01-01',2),
timestamp('2013-01-01-10.10.10.123456'),
timestamp(current date),
timestamp(sysdate,9))
1 2 3 4
---------------------- -------------------------- ------------------- -----------------------------
2012-01-01-00.00.00.00 2013-01-01-10.10.10.123456 2013-03-26-00.00.00 2013-03-26-11.19.07.000000000
1 条记录已选择。
timestamp_iso(exp):返回exp的timestamp形式。
参数:date,time,timestamp,char或varchar字符串(表示有效的日期、时间、时间戳)。
返回值:参数为date类型,timestamp类型的结果,时分秒毫秒全部为0。
参数为time类型,结果日期为当前日期,毫秒为0。
参数为timestamp类型,返回exp按照当前默认格式转换之后的值。
values (timestamp_iso(time('10:10:10')),
timestamp_iso('2013-01-01'),
timestamp_iso(current timestamp),
timestamp_iso('2013-03-26-10.12.10.123456'))
1 2 3 4
-------------------------- -------------------------- -------------------------- --------------------------
2013-03-26-10.10.10.000000 2013-01-01-00.00.00.000000 2013-03-26-13.53.20.809000 2013-03-26-10.12.10.123456
1 条记录已选择。
19、varchar_format(exp,format[,locale_name]):这里指讨论此函数将时间戳转换为字符串的问题。
exp:date、timestamp类型,在进行转换之前,date类型的参数将会被转换为timestamp(0)类型。
format:格式有多种,具体看下面实例。
locale_name:区域标识符号,若未指定的话,使用寄存器current lc_time的值,查看:values (current lc_time)。
实例:
tmstamp=timestamp(' 2007-03-09-14.07.38.123456')
Function invocation Result
------------------- ------
VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMISSFF3') 20070309020738123
VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHH24MISS') 20070309140738
VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMI') 200703090207
VARCHAR_FORMAT(TMSTAMP,'DD/MM/YY') 09/03/07
VARCHAR_FORMAT(TMSTAMP,'MM-DD-YYYY') 03-09-2007
VARCHAR_FORMAT(TMSTAMP,'J') 2454169
VARCHAR_FORMAT(TMSTAMP,'Q') 1
VARCHAR_FORMAT(TMSTAMP,'W') 2
VARCHAR_FORMAT(TMSTAMP,'IW') 10
VARCHAR_FORMAT(TMSTAMP,'WW') 10
VARCHAR_FORMAT(TMSTAMP,'Month','en_US') March
VARCHAR_FORMAT(TMSTAMP,'MONTH','en_US') MARCH
VARCHAR_FORMAT(TMSTAMP,'MON','en_US') MAR
VARCHAR_FORMAT(TMSTAMP,'Day','en_US') Friday
VARCHAR_FORMAT(TMSTAMP,'DAY','en_US') FRIDAY
VARCHAR_FORMAT(TMSTAMP,'Dy','en_US') Fri
VARCHAR_FORMAT(TMSTAMP,'Month','de_DE') M?rz
VARCHAR_FORMAT(TMSTAMP,'MONTH','de_DE') M?RZ
VARCHAR_FORMAT(TMSTAMP,'MON','de_DE') MRZ
VARCHAR_FORMAT(TMSTAMP,'Day','de_DE') Freitag
VARCHAR_FORMAT(TMSTAMP,'DAY','de_DE') FREITAG
VARCHAR_FORMAT(TMSTAMP,'Dy','de_DE') Fr
to_nchar()类似于varchar_format()函数。
to_char()类似varchar_format()函数。
20、★timestamp_format(str,format):取字符串str的format格式的timestamp类型。
参数:str为char或者varchar类型;
format:时间戳的格式。
返回值:timestamp类型;
db2 => values (timestamp_format('2012/12/12 15:10:10.123456','yyyy-mm-dd hh24:mi:ss.ff'))
1
--------------------------
2012-12-12-15.10.10.123456
1 条记录已选择。
更多细节:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0007107.html
相关函数:
to_timestamp()
to_date()
21、extract():取日期、时间或者时间戳的指定部分。有两种形式:
1.从日期或者时间戳中取年月日天。
extract(year|month|day from exp)
参数:year、month、day为固定参数,表示取的值;
exp:date或者timestamp类型。
values (current_timestamp,
extract(year from current_timestamp),
extract(month from current_timestamp),
extract(day from current_timestamp))
1 2 3 4
-------------------------- ----------- ----------- -----------
2013-03-26-14.02.38.323000 2013 3 26
1 条记录已选择。
values (extract(year from '2013-03-26'),
extract(month from '2013-01-03'),
extract(day from '2012-01-30'))
1 2 3
----------- ----------- -----------
2013 1 30
1 条记录已选择。
2.从时间或者时间戳中取时分秒。
extract(hour|minute|second from exp)
参数:hour、minute、second为固定值,表示取的值;
exp:time或者timestamp类型。
values (current_time,
extract(minute from current_time),
extract(hour from '15:23:21'),
extract(second from current_timestamp))
1 2 3 4
-------- ----------- ----------- ----------
14:09:18 9 15 18.885000
1 条记录已选择。
extract()函数的返回值:
1.指定取year、month、day、hour、minut,则返回integer类型。
2.对于timestamp(p)类型的值,second值的类型为decimal(2+p,p)。
3.对于time类型,或者有效的表示time或者timestamp类型的字符串,则second的为decimal(8,6)类型。
db2 => values (extract(second from current_timestamp(2)),extract(second from '2013-03-26-14.20.20.123456'))
1 2
------ ----------
13.83 20.123456
1 条记录已选择。
22、truncate(exp,format[,local_name])(或者trunc())
参数:exp:date、time、timestamp类型,不支持有效的时间日期类型的字符串,必须使用cast或者相应的函数进行转换。
format:截取保留的部分,如下:
year|yyyy:截取到年部分;
month|mon|mm:截取到月部分;
day|dy|d:截取到当前日期的本周起始日期;
ddd|dd|DD:截取到当天,默认值;
hh:截取到小时部分;
minute|mi:截取到分钟;
ss:截取到秒;
local_name:常量,在format为day,dy或者d的时候,指定一周的起始。
values (current_timestamp, --2013-03-26-15.50.39.589000
trunc(current_timestamp,'year'), --2013-01-01-00.00.00.000000
trunc(current_timestamp,'month'), --2013-03-01-00.00.00.000000
trunc(current_timestamp,'day'), --2013-03-24-00.00.00.000000
trunc(current_timestamp,'dd'), --2013-03-26-00.00.00.000000
trunc(current_timestamp,'hh'), --2013-03-26-15.00.00.000000
trunc(current_timestamp,'minute'), --2013-03-26-15.50.00.000000
trunc(current_timestamp,'ss'), --2013-03-26-15.50.39.000000
trunc(timestamp('2013-03-26-15.50.39.589000')) --2013-03-26-00.00.00.000000
)
相关函数:TRUNC_TIMESTAMP
转载请注明出处:http://blog.csdn.net/bobo12082119/article/details/8724583
--the end--
作者:BOBO12082119 发表于2013-3-27 6:29:36 原文链接
阅读:70 评论:0 查看评论