DB2各种日期函数

合集下载

db2时间函数

db2时间函数

db2时间函数1. 介绍时间函数是数据库管理系统中的一种特殊函数,用于处理和操作日期和时间数据。

在DB2数据库中,有许多内置的时间函数可用于执行各种日期和时间操作。

这些函数提供了方便和灵活的方法来处理日期和时间,并支持各种常见的日期和时间计算。

2. 常用的时间函数以下是一些常用的时间函数,可以在DB2数据库中使用:2.1 CURRENT_DATECURRENT_DATE函数返回当前日期。

它返回一个日期值,表示当前系统日期。

2.2 CURRENT_TIMECURRENT_TIME函数返回当前时间。

它返回一个时间值,表示当前系统时间。

2.3 CURRENT_TIMESTAMPCURRENT_TIMESTAMP函数返回当前日期和时间。

它返回一个时间戳值,表示当前系统日期和时间。

2.4 DATEDATE函数用于从日期时间戳值中提取日期部分。

它接受一个时间戳值作为参数,并返回一个日期值。

2.5 TIMETIME函数用于从日期时间戳值中提取时间部分。

它接受一个时间戳值作为参数,并返回一个时间值。

2.6 TIMESTAMPTIMESTAMP函数用于将日期和时间组合成一个时间戳值。

它接受日期和时间值作为参数,并返回一个时间戳值。

2.7 YEARYEAR函数用于从日期或时间戳值中提取年份部分。

它接受一个日期或时间戳值作为参数,并返回一个整数值,表示年份。

2.8 MONTHMONTH函数用于从日期或时间戳值中提取月份部分。

它接受一个日期或时间戳值作为参数,并返回一个整数值,表示月份。

2.9 DAYDAY函数用于从日期或时间戳值中提取天数部分。

它接受一个日期或时间戳值作为参数,并返回一个整数值,表示天数。

2.10 HOURHOUR函数用于从时间或时间戳值中提取小时部分。

它接受一个时间或时间戳值作为参数,并返回一个整数值,表示小时。

2.11 MINUTEMINUTE函数用于从时间或时间戳值中提取分钟部分。

它接受一个时间或时间戳值作为参数,并返回一个整数值,表示分钟。

DB2 SQL日期函数

DB2 SQL日期函数

DB2SQL日期函数DAYOFWEEK函数:获取星期号语法:DAYOFWEEK(D)参数:日期型D返回值:整型备注:1=星期天2=星期一3=星期二4=星期三5=星期四6=星期五7=星期六可以用以下方式纠正:DAYNAME函数:获取星期名语法:DAYNAME(D)参数:日期型D返回值:日期的星期名,如MONDAY等DAY函数:获取日期号语法:DAY(D)参数:日期型D返回值:整型,指定的日期号CURRENT TIME函数:获取当前时间语法:CURRENT TIME参数:当前时间返回值:日期型SYSIBM.SYSDUMMY1是一个特殊的内存中的表,用它可以发现DB2寄存器的值。

CURRENT TIMESTAMP函数:获取当前日期时间语法:CURRENT TIMESTAMP参数:当前日期时间返回值:当前日期时间CURRENT DATE函数:获取当前日期语法:CURRENT DATE参数:当前日期返回值:当前日期ADD_MONTHS函数:月加法语法:ADD_MONTHS(d,n)参数:日期型d,数值型n返回值:d再过n个月后的日期补充:n可以为负值。

DAYOFYEAR函数:获取一年中的日期号语法:DAYOFYEAR(D)参数:日期型D返回值:整型(该日期是一年中的第几天)范围1~366HOUR函数:获取小时数语法:HOUR(T)参数:时间型T返回值:整型0~23MINUTE函数:获取时间的分钟值语法:MINUTE(T)参数:时间型T返回值:整型0~59MONTH函数:获取日期的月份值语法:MONTH(D)参数:日期型D返回值:整型1~12MONTHNAME函数:获取日期的月份名称语法:MONTHNAME(D)参数:日期型D返回值:月份名称,如January等QUARTER函数:获取日期所在的季度语法:QUARTER(D)参数:日期型D返回值:整型1~4SECOND函数:获取时间的秒值语法:SECOND(T)参数:时间型T返回值:整型0~59WEEK函数:获取日期在一年中的周数语法:WEEK(D)参数:日期型D返回值:整型1~54YEAR函数:获取日期的年份值语法:YEAR(D)参数:日期型D返回值:整型AUTHOR:Lex KwokFROM:OUC。

db2日期时间格式

db2日期时间格式

db2⽇期时间格式1、db2可以通过SYSIBM.SYSDUMMY1、SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值。

SELECT 'HELLO DB2' FROM SYSIBM.SYSDUMMY1;--HELLO DB2SELECT 'HELLO DB2' FROM SYSIBM.DUAL;--HELLO DB2VALUES 'HELLO DB2';--HELLO DB22、CURRENT DATE获取当前⽇期;CURRENT TIME获取当前时间;CURRENT TIMESTAMP获取当前时间戳(含年、⽉、⽇、时、分、秒)。

VALUES CURRENT DATE--2012/5/25 0:00:00;VALUES CURRENT TIME--20:48:53;VALUES CURRENT TIMESTAMP--2012/5/25 20:49:12;3、YEAR()获取年;MONTH()获取⽉;DAY()获取⽇;HOUR()获取⼩时;MINUTE()获取分钟;SECOND()获取秒;DATE()获取⽇期;TIME()获取时间;TIMESTAMP()获取时间戳。

以上函数参数可以是⽇期时间类型,也可以为⽇期时间格式的字符串。

VALUES YEAR(CURRENT TIMESTAMP);/*2012*/ VALUES YEAR('2012-05-25 21:18:12');/*2012*/VALUES MONTH(CURRENT TIMESTAMP);/*5*/ VALUES MONTH('2012-05-25 21:18:12');/*5*/VALUES DAY(CURRENT TIMESTAMP);/*25*/ VALUES DAY('2012-05-25 21:18:12');/*25*/VALUES HOUR(CURRENT TIMESTAMP);/*21*/ VALUES HOUR('2012-05-25 21:18:12');/*21*/VALUES MINUTE(CURRENT TIMESTAMP);/*18*/ VALUES MINUTE('2012-05-25 21:18:12');/*18*/VALUES SECOND(CURRENT TIMESTAMP);/*12*/ VALUES SECOND('2012-05-25 21:18:12');/*12*/VALUES DATE(CURRENT TIMESTAMP);/*2012/5/25 0:00:00*/ VALUES DATE('2012-05-25 21:18:12');/*2012/5/25 0:00:00*/VALUES TIME(CURRENT TIMESTAMP);/*21:18:12*/ VALUES TIME('2012-05-25 21:18:12');/*21:18:12*/VALUES TIMESTAMP(CURRENT TIMESTAMP);/*2012/5/25 21:18:12*/ VALUES TIMESTAMP('2012-05-25 21:18:12');/*2012/5/25 21:18:12*/4、db2时间可以直接加减带单位的时间长度。

db2获取年月的方法 -回复

db2获取年月的方法 -回复

db2获取年月的方法-回复DB2是IBM公司开发的一种关系型数据库管理系统(RDBMS),在企业信息系统中被广泛应用。

在DB2中,我们可以使用多种方法来获取年月信息。

本文将针对这一问题进行详细介绍,并提供一步一步的方法。

一、使用当前日期函数获取年月信息:DB2提供了一个当前日期函数CURRENT_DATE,它可以返回系统当前的日期。

我们可以使用CURRENT_DATE函数来获取当前的年月信息。

1. 创建一个数据库连接:首先,我们需要在DB2中创建一个合适的数据库连接,以便能够连接到数据库并执行相应的SQL语句。

2. 编写SQL语句:接下来,我们需要编写一个SQL查询语句来获取当前的年月信息。

假设我们有一个名为"orders"的表,其中包含一个名为"order_date"的列,该列记录了订单的日期。

我们可以使用如下的SQL语句来获取当前的年月信息:SELECT YEAR(order_date) AS year, MONTH(order_date) AS month FROM orders在这个语句中,YEAR和MONTH函数分别用于提取日期中的年份和月份。

3. 执行SQL语句并获取结果:接下来,我们可以执行上述SQL语句,并获取结果。

在DB2中,可以使用命令行工具、控制台应用程序或其他DB2客户端工具来执行SQL语句。

执行SQL语句后,我们将会得到一个结果集,其中包含了当前的年月信息。

我们可以将结果集返回给应用程序,或者直接在DB2客户端工具中进行查看。

二、使用日期操作函数获取年月信息:除了使用CURRENT_DATE函数之外,我们还可以使用其他的日期操作函数来获取年月信息。

DB2提供了一些强大的日期操作函数,可以简化我们的操作并提供更丰富的功能。

1. 创建一个数据库连接:同样,我们需要在DB2中创建一个合适的数据库连接,以便能够连接到数据库并执行相应的SQL语句。

DB2函数大全(整理)

DB2函数大全(整理)

DB2函数‎大全函数名函数解释函数举例AVG()返回一组数‎值的平均值‎.SELEC‎T AVG(SALAR‎Y)FROMB‎S EMPM‎S; CORR(),CORRE‎L ATIO‎N()返回一对数‎值的关系系‎数.SELEC‎T CORR‎E LATI‎O N(SALAR‎Y,BONUS‎)FROMB‎S EMPM‎S;COUNT‎()返回一组行‎或值的个数‎.SELEC‎T COUN‎T(*)FROMB‎S EMPM‎S; COVAR‎(),COVAR‎I ANCE‎()返回一对数‎值的协方差‎.SELEC‎T COVA‎R(SALAR‎Y,BONUS‎)FROMB‎S EMPM‎S;MAX()返回一组数‎值中的最大‎值.SELEC‎T MAX(SALAR‎Y)FROMB‎S EMPM‎S;MIN()返回一组数‎值中的最小‎值.SELEC‎T MIN(SALAR‎Y)FROMB‎S EMPM‎S; STDDE‎V()返回一组数‎值的标准偏‎差.SELEC‎T STDD‎E V(SALAR‎Y)FROMB‎S EMPM‎S;SUM()返回一组数‎据的和.SELEC‎T SUM(SALAR‎Y)FROMB‎S EMPM‎S;VAR(),VARIA‎N CE()返回一组数‎值的方差.SELEC‎T VARI‎A NCE(SALAR‎Y)FROMB‎S EMPM‎S;ABS(),ABSVA‎L()返回参数的‎绝对值.SELEC‎T ABS(-3.4)FROMB‎S EMPM‎S; ACOS()返回参数的‎反余弦值.SELEC‎T ACOS‎(0.9)FROMB‎S EMPM‎S;ASCII‎()返回整数参‎数最左边的‎字符的AS‎C II码.SELEC‎T ASCI‎I('R')FROMB‎S EMPM‎S;ASIN()返回用弧度‎表示的角度‎的参数的反‎正弦函数.SELEC‎T ASIN‎(0.9)FROMB‎S EMPM‎S;ATAN()返回参数的‎反正切值,该参数用弧‎度表示的角‎度的参数.SELEC‎T ATAN‎(0.9)FROMB‎S EMPM‎S;ATAN2‎()返回用弧度‎表示的角度‎的X和Y坐‎标的反正切‎值.SELEC‎T ATAN‎2(0.5,0.9)FROMB‎S EMPM‎S;BIGIN‎T()返回整型常‎量中的数字‎或字符串的‎64位整数‎表示.SELEC‎T BIGI‎N T(EMP_N‎O)FROMB‎S EMPM‎S;CEILI‎N G() OR CEIL()返回比参数‎大或等于参‎数的最小的‎整数值.SELEC‎T CEIL‎I NG(3.56)FROMB‎S EMPM‎S;SELEC‎T CEIL‎(4.67)FROMB‎S EMPM‎S; CHAR()返回日期时‎间型,字符串,整数,十进制或双‎精度浮点数‎的字符串表‎示. SELEC‎T CHAR‎(SALAR‎Y,',')FROMB‎S EMPM‎S;CHR()返回具有由‎参数指定的‎A SCII‎码的字符.SELEC‎T CHAR‎(167)FROMB‎S EMPM‎S;CONCA‎T()返回两个字‎符串的连接‎.SELEC‎T CONC‎A T(EMP_N‎O,EMP_N‎A M)FROMB‎S EMPM‎S;YEAR()返回数值的‎年部分.SELEC‎T YEAR‎('2003/01/02')FROMB‎S EMPM‎S; VARCH‎A R()返回字符串‎,日期型,图形串的可‎变长度的字‎符串表示.SELEC‎T VARC‎H AR(EMP_N‎A M,50)FROMB‎S EMPM‎S;UCASE‎() OR UPPER‎()返回字符串‎的大写.SELEC‎TUCASE‎(EMP_N‎A M)FROMB‎S EMPM‎S;SELEC‎T UPPE‎R(EMP_N‎O)FROMB‎S EMPM‎S;TRUNC‎A TE() OR TRUNC‎()从表达式小‎数点右边的‎位置开始截‎断并返回该‎数值. SELEC‎T TRUN‎C ATE(345.6789,2)FROMB‎S EMPM‎S;TIME()返回一个数‎值中的时间‎.SELEC‎T TIME‎('2001-03-19.12.30.12345‎6')FROMB‎S EMPM‎S;SUBST‎R(EXP1,EXP2)返回EXP‎1串自EX‎P2处开始‎的子串.SELEC‎T SUBST‎R('CDNJF‎D JFJD‎',5)FROM BSEMP‎M S;SELEC‎TSUBST‎R('CDNJF‎D JFJD‎',5,2)FROM BSEMP‎M S;SQRT()返回该参数‎的平方根.SELEC‎T SQRT‎(36)FROMB‎S EMPM‎S;SPACE‎()返回由参数‎指定的长度‎,包含空格在‎内的字符串‎.SELEC‎T SPAC‎E(10)FROMB‎S EMPM‎S;SECON‎D()返回一个数‎值的秒部分‎.SELEC‎T SECO‎N D('18:34:32')FROMB‎S EMPM‎S;RTRIM‎()删除字符串‎尾部的空格‎.SELEC‎T RTRI‎M('COMME‎N T')FROMB‎S EMPM‎S;ROUND‎(EXP1,EXP2)返回EXP‎1小数点右‎边的第EX‎P2位置处‎开始的四舍‎五入值. SELEC‎T ROUN‎D(2345.6789,2)FROMB‎S EMPM‎SREPLA‎C E(EXP1,EXP2,EXP3)用EXP3‎替代EXP‎1中所有的‎E XP2SELEC‎T CHAR‎(REPLA‎C E('ROMAN‎D D','NDD','CCB'),10)FROMB‎S EMPM‎S; REPEA‎T(EXP1,EXP2)返回EXP‎1重复EX‎P2次后的‎字符串.SELEC‎T CHAR‎(REPEA‎T('REPEA‎T',3),21)FROMB‎S EMPM‎S;REAL()返回一个数‎值的单精度‎浮点数表示‎.SELEC‎T REAL‎(10)FROMB‎S EMPM‎S;RAND()返回0和1‎之间的随机‎浮点数.SELEC‎T RAND‎()FROMB‎S EMPM‎S; POWER‎(EXP1,EXP2)返回EXP‎1的EXP‎2次幂.SELEC‎T POWE‎R(2,5)FROMB‎S EMPM‎S;POSST‎R(EXP1,EXP2)返回EXP‎2在EXP‎1中的位置‎.SELEC‎T('ABCDE‎F GH','D')FROMB‎S EMPM‎S;NULLI‎F(EXP1,EXP2)如果EXP‎1=EXP2,则为NUL‎L,否则为EX‎P1NODEN‎U MBER‎()返回行的分‎区号.SELEC‎T NODE‎N UMBE‎R(EMP_N‎O)FROMB‎S EMPM‎S;MONTH‎()返回一个数‎值的月部分‎.SELEC‎T MONT‎H('2003/10/20')FROMB‎S EMPM‎S;MOD(EXP1,EXP2)返回EXP‎1除以EX‎P2的余数‎.SELEC‎T MOD(20,8)FROMB‎S EMPM‎S;MINUT‎E()返回一个数‎值的分钟部‎分.SELEC‎T MINU‎T E('18:34:23')FROMB‎S EMPM‎S;LTRIM‎()删除字符串‎前面的空格‎.SELEC‎T LTRI‎M('CDDD')FROMB‎S EMPM‎S;HOUR()返回一个数‎值的小时部‎分.SELEC‎T HOUR‎('18:34:23')FROMB‎S EMPM‎S;DOUBL‎E()如果参数是‎一个数字表‎达式,返回与其相‎对应的浮点‎数,如果参数是‎字符串表达‎式,则返回该数‎的字符串表‎达式.SELEC‎T DOUB‎L E('5678')FROMB‎S EMPM‎S;EXP()返回参数的‎指数函数.SELEC‎T EXP(2)FROMB‎S EMPM‎S;FLOAT‎()返回一个数‎的浮点表示‎.SELEC‎T FLOA‎T(789)FROMB‎S EMPM‎S; FLOOR‎()返回小于或‎等于参数的‎最大整数.SLECT‎F LOOR‎(88.93)FROMB‎S EMPM‎S;HEX()返回一个表‎示为字符串‎的值的16‎进制表示.SELEC‎T HEX(16)FROMB‎S EMPM‎S;因为没有更‎好的术语,所以您还可‎以使用英语‎来执行日期‎和时间计算‎:curre‎n t date + 1 YEARcurre‎n t date + 3 YEARS‎+ 2 MONTH‎S + 15 DAYScurre‎n t time + 5 HOURS‎- 3 MINUT‎E S + 10 SECON‎D S要计算两个‎日期之间的‎天数,您可以对日‎期作减法,如下所示:days (curre‎n t date) - days (date('1999-10-22'))而以下示例‎描述了如何‎获得微秒部‎分归零的当‎前时间戳记‎:CURRE‎N T TIMES‎T AMP - MICRO‎S ECON‎D (curre‎n t times‎t amp) MICRO‎S ECON‎D S如果想将日‎期或时间值‎与其它文本‎相衔接,那么需要先‎将该值转换‎成字符串。

DB2各种日期函数

DB2各种日期函数

基础要使用SQL 获得当前的日期、时间及时间戳记,请参考适当的DB2 寄存器:SELECT current date FROM sysibm.sysdummy1SELECT current time FROM sysibm.sysdummy1SELECT current timestamp FROM sysibm.sysdummy1sysibm.sysdummy1表是一个特殊的内存中的表,用它可以发现如上面演示的DB2 寄存器的值。

您也可以使用关键字VALUES 来对寄存器或表达式求值。

例如,在DB2 命令行处理器(Command Line Processor,CLP)上,以下SQL 语句揭示了类似信息:VALUES current dateVALUES current timeVALUES current timestamp在余下的示例中,我将只提供函数或表达式,而不再重复SELECT ... FROM sysibm.sysdummy1 或使用VALUES 子句。

要使当前时间或当前时间戳记调整到GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器:current time - current timezonecurrent timestamp - current timezone给定了日期、时间或时间戳记,则使用适当的函数可以单独抽取出(如果适用的话)年、月、日、时、分、秒及微秒各部分:YEAR (current timestamp)MONTH (current timestamp)DAY (current timestamp)HOUR (current timestamp)MINUTE (current timestamp)SECOND (current timestamp)MICROSECOND (current timestamp)从时间戳记单独抽取出日期和时间也非常简单:DATE (current timestamp)TIME (current timestamp)因为没有更好的术语,所以您还可以使用英语来执行日期和时间计算:current date + 1 YEARcurrent date + 3 YEARS + 2 MONTHS + 15 DAYScurrent time + 5 HOURS - 3 MINUTES + 10 SECONDS要计算两个日期之间的天数,您可以对日期作减法,如下所示:days (current date) - days (date('1999-10-22'))而以下示例描述了如何获得微秒部分归零的当前时间戳记:CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS如果想将日期或时间值与其它文本相衔接,那么需要先将该值转换成字符串。

db2时间函数

db2时间函数

db2时间函数DB2是一种关系型数据库管理系统,它提供了许多时间函数来处理日期和时间数据。

这些时间函数可以帮助用户在DB2中进行时间计算和处理,从而更好地管理和分析数据。

下面是一些常用的DB2时间函数:1. CURRENT_DATE:返回当前日期,格式为YYYY-MM-DD。

2. CURRENT_TIME:返回当前时间,格式为HH:MM:SS。

3. CURRENT_TIMESTAMP:返回当前日期和时间,格式为YYYY-MM-DD HH:MM:SS。

4. DATE:将日期字符串转换为日期类型。

5. DAY:返回日期中的天数。

6. MONTH:返回日期中的月份。

7. YEAR:返回日期中的年份。

8. HOUR:返回时间中的小时数。

9. MINUTE:返回时间中的分钟数。

10. SECOND:返回时间中的秒数。

11. TIMESTAMP:将日期和时间字符串转换为时间戳类型。

12. WEEK:返回日期所在的周数。

13. WEEKDAY:返回日期所在的星期几。

14. DAYS:计算两个日期之间的天数差。

15. MONTHS:计算两个日期之间的月数差。

16. YEARS:计算两个日期之间的年数差。

这些时间函数可以在SELECT语句中使用,以便在查询结果中显示日期和时间数据。

例如,以下查询将返回当前日期和时间:SELECT CURRENT_TIMESTAMP FROM SYSIBM.SYSDUMMY1;此外,时间函数还可以在WHERE子句中使用,以便根据日期和时间数据过滤查询结果。

例如,以下查询将返回所有在当前月份之后创建的订单:SELECT * FROM ORDERS WHERE MONTH(CREATE_DATE) > MONTH(CURRENT_DATE);总之,DB2时间函数是处理日期和时间数据的有用工具。

它们可以帮助用户更好地管理和分析数据,从而提高数据库的效率和可靠性。

DB2 V95常用函数详解(带实例)

DB2 V95常用函数详解(带实例)

DB2常用函数实例版使用说明:函数定义形式result : schema-name.funcation_name(para-list)其中参数列表形式,<>表示必选参数,[]表示可选参数,|表示任选其一下面的所有实例均在DB2 V95版本测试通过,如果是新版本会加注。

any-builtin-type:Any data type that is not a distinct type structured-type:Any user-defined structured type defined to the databasecharacter-type:Any of the character string types: CHAR, VARCHAR, LONG VARCHAR, CLOB.datetime-type:Any of the datetime types: DATE, TIME, TIMESTAMPgraphic-type:Any of the double byte character string types: GRAPHIC, VARGRAPHIC, LONGVARGRAPHIC, DBCLOB.string-type:Any type from character type, graphic-type or BLOB numeric-type:Any of the numeric types: SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE.函数定义的Schema有sysfun和sysibm1 字符串函数ascii 返回字符串首字符的ASCII码值integer : sysfun.ascii(<char>|<varchar(4000)>|<clob(1M)>) values sysfun.ascii('A'),sysfun.ascii('ABC'),sysfun.ascii('中国人'); 结果:65 65 206hex 返回字符的十六进制值varchar : hex(<any-type>)values hex('中'),hex('A'),x'41',x'E590B4'; 结果:E590B4 41 A 中chr 返回ASCII值对应的字符char : sysfun.chr(<integer>)values sysfun.chr(89); 结果:Yconcat 字符串连接string-type : sysibm.concat(<string-type>,<string-type>) values sysibm.concat('hello','world');结果:helloworldlower,lcase 转小写,upper,ucase 转大写varchar(4000)|clob(1M) : sysfun.lcase(<varchar(4000>|<clob(1M)>)char|varchar : sysibm.lower(<char>|<varchar>)values sysibm.lower('Your Name'),sysibm.upper('Your Name'); 结果:your name YOUR NAMEvalues sysibm.lcase('Your Name'),sysfun.ucase('Your Name'); 结果:your name YOUR NAMEltrim 去左空格,rtrim 去右空格,trim 去左右空格char|varchar|graphic sysibm.ltrim(<char>|<varchar>|<graphic>)varchar(4000)|clob(1M) sysfun.ltrim(<varchar(4000)>|<clob(1M)>)rtrim定义同ltrim,只不过trim函数定义不清楚values '['||sysibm.ltrim(' h w ')||']','['||sysfun.rtrim(' h w ')||']','['||trim(' h w ')||']'; 结果:[h w ] [ h w] [h w]trim 去除表达式前后指定的字符,默认是空格character-type : sysibm.trim([B|BOTH|L|LEADING|T|TRAILING] <strip-express> FROM <string-express>) 将表达式前或后(默认是BOTH)指定的字符(strip-express)移除values trim('0' from '00012300') 结果:123strip 去除表达式前后指定的字符,默认是空格character-type : sysibm.strip(<string-express>[,B|BOTH|L|LEADING|T|TRAILING,< strip-express>])values strip('**88000***',b,'*') 结果:88000posstr 查找字符串位置(从1开始计数),没有找到返回0string-type : sysibm.posstr(<string-type:source-string>,<string-type:search-s tring>) 前者为source-string,后为search-stringvalues sysibm.posstr('the one is not that one','one'); 结果:5 position 查找字符串位置,与posstr功能类似,由于考虑到不同国家的字符集,增强编码模式string-type : sysibm.position(<string-type:source-string>,<string-type:search -string>,CODEUNITS16|CODEUNITS32|OCTETS)values position('a','abca',OCTETS) 结果:1locate 搜索子字符串出现的位置,找不到返回0integer : sysfun.locate(<varchar(4000):exp1>,<varchar(4000):exp2>[,inte ger]) 其中varchar(4000)还可以换成clob(1M)或blob(1M)values sysfun.locate('y','yesterday'),sysfun.locate('y','yesterday',2); 结果: 1 9repeat 重复字符串varchar(4000)|clob(1M)|blob(1M) : sysfun.repeat(<varchar(4000)>|<clob(1M)>|<blob(1M)>,<integ er>)values sysfun.repeat('ab',5); 结果:abababababspace 产生空格varchar(4000) : sysfun.space(<integer>)values '['||sysfun.space(5)||']' ; 结果:[ ]replace 替换字符串varchar(4000)|clob(1M)|blob(1M) : sysfun.replace(<varchar(4000):exp1>,<varchar(4000):exp2>,<var char(4000):exp3>) 在exp1中查找所有exp2使用exp3来替换values sysfun.replace('abac','a','d'); 结果:dbdcleft 返回左边字符串right 返回右边字符串varchar(4000)|clob(1M)|blob(1M) : sysfun.left(<varchar(4000)>|<clob(1M)>,<integer>) right函数同样定义values left('adf.adf',5),right('adf.adf',5) ; 结果:adf.a f.adf values right(digits(3),5),left(rtrim(char(3))||'00000',5); 结果: 00003 30000 这也是左补零右补零的方法substr 截取字符中string-type : sysibm.substr(<string-type:string>,<integer:start>[,integer:leng th]) 要求start从1~string的长度,如果指定length的话,要求必须能取到length位字符,不然会报错。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基础要使用SQL 获得当前的日期、时间及时间戳记,请参考适当的DB2 寄存器:SELECT current date FROM sysibm.sysdummy1SELECT current time FROM sysibm.sysdummy1SELECT current timestamp FROM sysibm.sysdummy1sysibm.sysdummy1表是一个特殊的内存中的表,用它可以发现如上面演示的DB2 寄存器的值。

您也可以使用关键字V ALUES 来对寄存器或表达式求值。

例如,在DB2 命令行处理器(Command Line Processor,CLP)上,以下SQL 语句揭示了类似信息:V ALUES current dateV ALUES current timeV ALUES current timestamp在余下的示例中,我将只提供函数或表达式,而不再重复SELECT ... FROM sysibm.sysdummy1 或使用V ALUES 子句。

要使当前时间或当前时间戳记调整到GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器:current time - current timezonecurrent timestamp - current timezone给定了日期、时间或时间戳记,则使用适当的函数可以单独抽取出(如果适用的话)年、月、日、时、分、秒及微秒各部分:YEAR (current timestamp)MONTH (current timestamp)DAY (current timestamp)HOUR (current timestamp)MINUTE (current timestamp)SECOND (current timestamp)MICROSECOND (current timestamp)从时间戳记单独抽取出日期和时间也非常简单:DA TE (current timestamp)TIME (current timestamp)因为没有更好的术语,所以您还可以使用英语来执行日期和时间计算:current date + 1 YEARcurrent date + 3 YEARS + 2 MONTHS + 15 DAYScurrent time + 5 HOURS - 3 MINUTES + 10 SECONDS要计算两个日期之间的天数,您可以对日期作减法,如下所示:days (current date) - days (date('1999-10-22'))而以下示例描述了如何获得微秒部分归零的当前时间戳记:CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS如果想将日期或时间值与其它文本相衔接,那么需要先将该值转换成字符串。

为此,只要使用CHAR() 函数:char(current date)char(current time)char(current date + 12 hours)要将字符串转换成日期或时间值,可以使用:TIMESTAMP ('2002-10-20-12.00.00.000000')TIMESTAMP ('2002-10-20 12:00:00')DA TE ('2002-10-20')DA TE ('10/20/2002')TIME ('12:00:00')TIME ('12.00.00')TIMESTAMP()、DATE() 和TIME() 函数接受更多种格式。

上面几种格式只是示例,我将把它作为一个练习,让读者自己去发现其它格式。

警告:摘自DB2 UDB V8.1 SQL Cookbook,作者Graeme Birchall(see /homepages/Graeme_Birchall).如果你在日期函数中偶然地遗漏了引号,那将如何呢?结论是函数会工作,但结果会出错:SELECT DATE(2001-09-22) FROM SYSIBM.SYSDUMMY1;结果:======05/24/0006为什么会产生将近2000 年的差距呢?当DA TE 函数得到了一个字符串作为输入参数的时候,它会假定这是一个有效的DB2 日期的表示,并对其进行适当地转换。

相反,当输入参数是数字类型时,函数会假定该参数值减 1 等于距离公元第一天(0001-01-01)的天数。

在上面的例子中,我们的输入是2001-09-22,被理解为(2001-9)-22, 等于1970 天,于是该函数被理解为DA TE(1970)。

日期函数有时,您需要知道两个时间戳记之间的时差。

为此,DB2 提供了一个名为TIMESTAMPDIFF() 的内置函数。

但该函数返回的是近似值,因为它不考虑闰年,而且假设每个月只有30 天。

以下示例描述了如何得到两个日期的近似时差:timestampdiff (<n>, char(timestamp('2002-11-30-00.00.00')-timestamp('2002-11-08-00.00.00')))对于<n>,可以使用以下各值来替代,以指出结果的时间单位:1 = 秒的小数部分2 = 秒4 = 分8 = 时16 = 天32 = 周64 = 月128 = 季度256 = 年当日期很接近时使用timestampdiff() 比日期相差很大时精确。

如果需要进行更精确的计算,可以使用以下方法来确定时差(按秒计):(DAYS(t1) - DAYS(t2)) * 86400 +(MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2))为方便起见,还可以对上面的方法创建SQL 用户定义的函数:CREATE FUNCTION secondsdiff(t1 TIMESTAMP, t2 TIMESTAMP)RETURNS INTRETURN ((DAYS(t1) - DAYS(t2)) * 86400 +(MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2)))@如果需要确定给定年份是否是闰年,以下是一个很有用的SQL 函数,您可以创建它来确定给定年份的天数:CREATE FUNCTION daysinyear(yr INT)RETURNS INTRETURN (CASE (mod(yr, 400)) WHEN 0 THEN 366 ELSECASE (mod(yr, 4)) WHEN 0 THENCASE (mod(yr, 100)) WHEN 0 THEN 365 ELSE 366 ENDELSE 365 ENDEND)@最后,以下是一张用于日期操作的内置函数表。

它旨在帮助您快速确定可能满足您要求的函数,但未提供完整的参考。

有关这些函数的更多信息,请参考SQL 参考大全。

SQL 日期和时间函数DAYNAME 返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,Friday)。

DAYOFWEEK 返回参数中的星期几,用范围在1-7 的整数值表示,其中1 代表星期日。

DAYOFWEEK_ISO 返回参数中的星期几,用范围在1-7 的整数值表示,其中1 代表星期一。

DAYOFYEAR 返回参数中一年中的第几天,用范围在1-366 的整数值表示。

DAYS 返回日期的整数表示。

JULIAN_DAY 返回从公元前4712 年1 月1 日(儒略日历的开始日期)到参数中指定日期值之间的天数,用整数值表示。

MIDNIGHT_SECONDS 返回午夜和参数中指定的时间值之间的秒数,用范围在0 到86400 之间的整数值表示。

MONTHNAME 对于参数的月部分的月份,返回一个大小写混合的字符串(例如,January)。

TIMESTAMP_ISO 根据日期、时间或时间戳记参数而返回一个时间戳记值。

TIMESTAMP_FORMAT 从已使用字符模板解释的字符串返回时间戳记。

TIMESTAMPDIFF 根据两个时间戳记之间的时差,返回由第一个参数定义的类型表示的估计时差。

TO_CHAR < td>返回已用字符模板进行格式化的时间戳记的字符表示。

TO_CHAR 是V ARCHAR_FORMAT 的同义词。

TO_DA TE 从已使用字符模板解释过的字符串返回时间戳记。

TO_DATE 是TIMESTAMP_FORMAT 的同义词。

WEEK 返回参数中一年的第几周,用范围在1-54 的整数值表示。

以星期日作为一周的开始。

WEEK_ISO 返回参数中一年的第几周,用范围在1-53 的整数值表示。

改变日期格式在日期的表示方面,这也是我经常碰到的一个问题。

用于日期的缺省格式由数据库的地区代码决定,该代码在数据库创建的时候被指定。

例如,我在创建数据库时使用territory=US 来定义地区代码,则日期的格式就会像下面的样子:values current date1----------05/30/20031 record(s) selected.也就是说,日期的格式是MM/DD/YYYY. 如果想要改变这种格式,你可以通过绑定特定的DB2 工具包来实现. 其他被支持的日期格式包括:DEF 使用与地区代码相匹配的日期和时间格式。

EUR 使用欧洲日期和时间的IBM 标准格式。

ISO 使用国际标准组织(ISO)制订的日期和时间格式。

JIS 使用日本工业标准的日期和时间格式。

LOC 使用与数据库地区代码相匹配的本地日期和时间格式。

USA 使用美国日期和时间的IBM 标准格式。

在Windows 环境下,要将缺省的日期和时间格式转化成ISO 格式(YYYY-MM-DD),执行下列操作:在命令行中,改变当前目录为sqllib\bnd 。

例如:在Windows 环境: c:\program files\IBM\sqllib\bnd在UNIX 环境: /home/db2inst1/sqllib/bnd从操作系统的命令行界面中用具有SYSADM 权限的用户连接到数据库: db2 connect to DBNAMEdb2 bind @db2ubind.lst datetime ISO blocking all grant public(在你的实际环境中,用你的数据库名称和想使用的日期格式分别来替换DBNAME and ISO。

)现在,你可以看到你的数据库已经使用ISO 作为日期格式了:values current date1----------2003-05-301 record(s) selected.定制日期/时间格式在上面的例子中,我们展示了如何将DB2 当前的日期格式转化成系统支持的特定格式。

相关文档
最新文档