DB2各种日期函数

合集下载

db2获取年月的方法 -回复

db2获取年月的方法 -回复

db2获取年月的方法-回复Db2是一种关系型数据库管理系统,被广泛应用于企业级应用程序开发。

在使用Db2的过程中,经常需要获取年月数据,并对其进行处理和分析。

本文将详细介绍如何使用Db2获取年月数据的方法,以及一些常用的处理和分析技巧。

首先,我们需要了解在Db2中如何表示年月数据。

在Db2中,通常使用DATE或TIMESTAMP数据类型来表示日期和时间。

DATE类型只表示年月日,而TIMESTAMP类型则包含年月日和时分秒。

根据具体需求,我们可以选择使用其中之一来表示年月数据。

1. 获取当前年月获取当前年月是在数据处理中一项常见的需求。

在Db2中,可以使用CURRENT_DATE或CURRENT_TIMESTAMP函数来获取当前的日期和时间。

我们可以通过截取函数来获取年月数据。

例如,使用CURRENT_DATE函数获取当前日期,并使用DATE函数将其转换为DATE类型:SELECT DATE(CURRENT_DATE) FROM SYSIBM.SYSDUMMY1;运行以上SQL语句后,将返回当前的日期,格式为YYYY-MM-DD。

我们可以通过使用SUBSTR函数来截取年月数据:SELECT SUBSTR(CHAR(DATE(CURRENT_DATE)), 1, 7) FROM SYSIBM.SYSDUMMY1;上述SQL语句将返回当前的年月,格式为YYYY-MM。

这样,我们就成功地获取到了当前的年月数据。

2. 获取指定日期的年月在数据处理中,我们可能还需要获取指定日期的年月数据。

可以通过将日期转换为字符型,然后截取所需的年份和月份数据来实现。

例如,获取1970年11月的年月数据:SELECT SUBSTR(CHAR(DATE('1970-11-01')), 1, 7) FROM SYSIBM.SYSDUMMY1;上述SQL语句将返回1970年11月的年月数据,格式为YYYY-MM。

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函数‎大全函数名函数解释函数举例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位字符,不然会报错。

知识积累DB2

知识积累DB2

日常手记一、DB2函数1、日期和时间函数Sysdate(同current date) 系统时间select sysdate,current date from SYSDUMMY1;--获取当前日期:select current date from sysibm.sysdummy1;values current date;--获取当前日期(时分秒)select current time from sysibm.sysdummy1;values current time;--获取当前时间戳select current timestamp from sysibm.sysdummy1;values current timestamp;--要使当前时间或当前时间戳记调整到GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器:values current time -current timezone;values current timestamp -current timezone;--获取当前年、月、日、时、分钟、秒、毫秒values year(current timestamp);values month(current timestamp);values day(current timestamp);values hour(current timestamp);values minute(current timestamp);values second(current timestamp);values microsecond(current timestamp);--从时间戳记单独抽取出日期和时间values date(current timestamp);values VARCHAR_FORMA T(current TIMESTAMP,'yyyy-mm-dd');values char(current date);values time(current timestamp);--执行日期和时间的计算values current date+1 year;values current date+3 years+2 months +15 days;values current time +5 hours -3 minutes +10 seconds;--计算两个日期之间的天数values days(current date)- days(date('2010-02-20'));--时间和日期换成字符串values char(current date);values char(current time);--要将字符串转换成日期或时间值values timestamp('2010-03-09-22.43.00.000000');values timestamp('2010-03-09 22:44:36');values date('2010-03-09');values date('03/09/2010');values time('22:45:27');values time('22.45.27');--计算两个时间戳记之间的时差:--秒的小数部分为单位values timestampdiff(1,char(current timestamp - timestamp('2010-01-01-00.00.00')));--秒为单位values timestampdiff(2,char(current timestamp - timestamp('2010-01-01-00.00.00')));--分为单位values timestampdiff(4,char(current timestamp - timestamp('2010-01-01-00.00.00')));--小时为单位values timestampdiff(8,char(current timestamp - timestamp('2010-01-01-00.00.00')));--天为单位values timestampdiff(16,char(current timestamp - timestamp('2010-01-01-00.00.00')));--周为单位values timestampdiff(32,char(current timestamp - timestamp('2010-01-01-00.00.00')));--月为单位values timestampdiff(64,char(current timestamp - timestamp('2010-01-01-00.00.00')));--季度为单位values timestampdiff(128,char(current timestamp - timestamp('2010-01-01-00.00.00')));--年为单位values timestampdiff(256,char(current timestamp - timestamp('2010-01-01-00.00.00')));--其他日期函数DAYNAME返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,Friday)。

DB2日期和时间函数汇总

DB2日期和时间函数汇总

DB2⽇期和时间函数汇总 上⼀篇提到过在DB2中,可以通过SYSIBM.SYSDUMMY1、SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值。

则在这篇中,我们直接⽤VALUES关键字来看看这些函数。

1.CURRENT DATE获取当前⽇期;CURRENT TIME获取当前时间;CURRENT TIMESTAMP获取当前时间戳(含年、⽉、⽇、时、分、秒);YEAR()获取年;MONTH()获取⽉;DAY()获取⽇; HOUR()获取⼩时;MINUTE()获取分钟;SECOND()获取秒;DATE()获取⽇期;TIME()获取时间;TIMESTAMP()获取时间戳。

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

--获取⽇期:VALUES DATE(CURRENT TIMESTAMP);--2016/1/6VALUES CURRENT DATE;--2016/1/6--获取时间VALUES TIME(CURRENT TIMESTAMP);--16:40:40VALUES CURRENT TIME;--16:40:40--获取时间戳VALUES TIMESTAMP(CURRENT TIMESTAMP);--2016/1/6 16:40:40VALUES CURRENT TIMESTAMP;--2016/1/6 16:40:40VALUES sysdate;--2016/1/6 16:40:40--获取当前年份values year(current timestamp);--2016--获取当前⽉values month(current timestamp);--1--获取当前⽇values day(current timestamp);--6--获取当前时values hour(current timestamp);--16--获取分钟values minute(current timestamp);--40--获取秒values second(current timestamp);--40--获取毫秒values microsecond(current timestamp); --4152692、DB2时间可以直接加减带单位的时间长度。

DB2中与日期有关的内置函数

DB2中与日期有关的内置函数

一.DB2中有关日期和时间的函数,及应用2007年08月14日星期二 16:01SELECT current date - 1 DAYS FROM sysibm.sysdummy1 查询系统数据库昨天的时间DB2中有关日期和时间的函数,及应用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 返回已用字符模板进行格式化的时间戳记的字符表示。

TO_CHAR 是 VARCHAR_FORMAT 的同义词。

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

TO_DATE 是 TIMESTAMP_FORMAT 的同义词。

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

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

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

DB2常见函数和对象

DB2常见函数和对象

DB2常见函数和对象1、字符串处理CHAR()返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示.SELECT CHAR(SALARY,',') FROM BSEMPMS;CHR()返回具有由参数指定的ASCII码的字符.SELECT CHAR(167) FROM BSEMPMS;CONCAT()返回两个字符串的连接.SELECT CONCAT(EMP_NO,EMP_NAM) FROM BSEMPMS;V ARCHAR()返回字符串,日期型,图形串的可变长度的字符串表示.SELECT V ARCHAR(EMP_NAM,50) FROM BSEMPMS;UCASE() OR UPPER()返回字符串的大写.SELECT UCASE(EMP_NAM) FROM BSEMPMS;SELECT UPPER(EMP_NO) FROM BSEMPMS;TRUNCATE()ORTRUNC()从表达式小数点右边的位置开始截断并返回该数值.SELECT TRUNCATE(345.6789,2) FROM BSEMPMS;SUBSTR(EXP1,EXP2)返回EXP1串自EXP2处开始的子串.SELECT SUBSTR('CDNJFDJFJD',5) FROM BSEMPMS;SELECT SUBSTR('CDNJFDJFJD',5,2) FROM BSEMPMS;REPLACE(EXP1,EXP2,EXP3)用EXP3替代EXP1中所有的EXP2SELECT CHAR(REPLACE('ROMANDD','NDD','CCB'),10) FROM BSEMPMS;REPEAT(EXP1,EXP2)返回EXP1重复EXP2次后的字符串.SELECT CHAR(REPEAT('REPEAT',3),21) FROM BSEMPMS;SPACE()返回由参数指定的长度,包含空格在内的字符串.SELECT SPACE(10) FROM BSEMPMS;RTRIM()删除字符串尾部的空格.SELECT RTRIM('COMMENT') FROM BSEMPMS;LTRIM()删除字符串前面的空格.SELECT LTRIM('CDDD') FROM BSEMPMS;LOCATE(EXP1,EXP2)查找EXP1在EXP2中的位置。

DB2函数大全(整理)

DB2函数大全(整理)

DB2函数大全函数名函数解释函数举例AVG()返回一组数值的平均值.SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION()返回一对数值的关系系数. SELECTCORRELATION(SALARY,BONUS)FROMBSEMPMS;COUNT()返回一组行或值的个数.SELECTCOUNT(*)FROMBSEMPMS; COVAR(),COVARIANCE()返回一对数值的协方差.SELECTCOVAR(SALARY,BONUS)FROMBSEMPMS;MAX()返回一组数值中的最大值.SELECTMAX(SALARY)FROMBSEMPMS;MIN()返回一组数值中的最小值.SELECTMIN(SALARY)FROMBSEMPMS; STDDEV()返回一组数值的标准偏差.SELECTSTDDEV(SALARY)FROMBSEMPMS;SUM()返回一组数据的和.SELECTSUM(SALARY)FROMBSEMPMS;VAR(),VARIANCE()返回一组数值的方差.SELECTVARIANCE(SALARY)FROMBSEMPMS;ABS(),ABSVAL()返回参数的绝对值.SELECTABS(-3.4)FROMBSEMPMS; ACOS()返回参数的反余弦值.SELECTACOS(0.9)FROMBSEMPMS;ASCII()返回整数参数最左边的字符的ASCII码.SELECTASCII('R')FROMBSEMPMS;ASIN()返回用弧度表示的角度的参数的反正弦函数.SELECTASIN(0.9)FROMBSEMPMS;ATAN()返回参数的反正切值,该参数用弧度表示的角度的参数. SELECTATAN(0.9)FROMBSEMPMS;ATAN2()返回用弧度表示的角度的X和Y坐标的反正切值.SELECTATAN2(0.5,0.9)FROMBSEMPMS;BIGINT()返回整型常量中的数字或字符串的64位整数表示. SELECTBIGINT(EMP_NO)FROMBSEMPMS;CEILING() OR CEIL()返回比参数大或等于参数的最小的整数值. SELECTCEILING(3.56)FROMBSEMPMS;SELECTCEIL(4.67)FROMBSEMPMS; CHAR()返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示. SELECTCHAR(SALARY,',')FROMBSEMPMS;CHR()返回具有由参数指定的ASCII码的字符.SELECTCHAR(167)FROMBSEMPMS;CONCAT()返回两个字符串的连接.SELECTCONCAT(EMP_NO,EMP_NAM)FROMBSEMPMS;YEAR()返回数值的年部分.SELECTYEAR('2003/01/02')FROMBSEMPMS; VARCHAR()返回字符串,日期型,图形串的可变长度的字符串表示. SELECTVARCHAR(EMP_NAM,50)FROMBSEMPMS;UCASE() OR UPPER()返回字符串的大写.SELECTUCASE(EMP_NAM)FROMBSEMPMS;SELECTUPPER(EMP_NO)FROMBSEMPMS;TRUNCATE() OR TRUNC()从表达式小数点右边的位置开始截断并返回该数值. SELECTTRUNCATE(345.6789,2)FROMBSEMPMS;TIME()返回一个数值中的时间.SELECTTIME('2001-03-19.12.30.123456')FROMBSEMPMS;SUBSTR(EXP1,EXP2)返回EXP1串自EXP2处开始的子串.SELECT SUBSTR('CDNJFDJFJD',5)FROM BSEMPMS;SELECTSUBSTR('CDNJFDJFJD',5,2)FROM BSEMPMS;SQRT()返回该参数的平方根.SELECTSQRT(36)FROMBSEMPMS;SPACE()返回由参数指定的长度,包含空格在内的字符串.SELECTSPACE(10)FROMBSEMPMS;SECOND()返回一个数值的秒部分.SELECTSECOND('18:34:32')FROMBSEMPMS;RTRIM()删除字符串尾部的空格.SELECTRTRIM('COMMENT')FROMBSEMPMS;ROUND(EXP1,EXP2)返回EXP1小数点右边的第EXP2位置处开始的四舍五入值.SELECTROUND(2345.6789,2)FROMBSEMPMSREPLACE(EXP1,EXP2,EXP3)用EXP3替代EXP1中所有的EXP2 SELECTCHAR(REPLACE('ROMANDD','NDD','CCB'),10)FROMBSEMPMS; REPEAT(EXP1,EXP2)返回EXP1重复EXP2次后的字符串.SELECTCHAR(REPEAT('REPEAT',3),21)FROMBSEMPMS;REAL()返回一个数值的单精度浮点数表示.SELECTREAL(10)FROMBSEMPMS;RAND()返回0和1之间的随机浮点数.SELECTRAND()FROMBSEMPMS; POWER(EXP1,EXP2)返回EXP1的EXP2次幂.SELECTPOWER(2,5)FROMBSEMPMS;POSSTR(EXP1,EXP2)返回EXP2在EXP1中的位置.SELECT('ABCDEFGH','D')FROMBSEMPMS;NULLIF(EXP1,EXP2)如果EXP1=EXP2,则为NULL,否则为EXP1 NODENUMBER()返回行的分区号.SELECTNODENUMBER(EMP_NO)FROMBSEMPMS;MONTH()返回一个数值的月部分.SELECTMONTH('2003/10/20')FROMBSEMPMS;MOD(EXP1,EXP2)返回EXP1除以EXP2的余数.SELECTMOD(20,8)FROMBSEMPMS;MINUTE()返回一个数值的分钟部分.SELECTMINUTE('18:34:23')FROMBSEMPMS;LTRIM()删除字符串前面的空格.SELECTLTRIM('CDDD')FROMBSEMPMS;HOUR()返回一个数值的小时部分.SELECTHOUR('18:34:23')FROMBSEMPMS;DOUBLE()如果参数是一个数字表达式,返回与其相对应的浮点数,如果参数是字符串表达式,则返回该数的字符串表达式.SELECTDOUBLE('5678')FROMBSEMPMS;EXP()返回参数的指数函数.SELECTEXP(2)FROMBSEMPMS;FLOAT()返回一个数的浮点表示.SELECTFLOAT(789)FROMBSEMPMS; FLOOR()返回小于或等于参数的最大整数.SLECTFLOOR(88.93)FROMBSEMPMS;HEX()返回一个表示为字符串的值的16进制表示.SELECTHEX(16)FROMBSEMPMS;因为没有更好的术语,所以您还可以使用英语来执行日期和时间计算: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 日期函数计算日期差2012-11-07 22:19:50| 分类:DB2知识|举报|字号订阅1.获得当前时间与someday的日期差值。

SELECT days(current date) - days(someday)select days(current timestamp) - days(‘2012-02-03 12:01:02.236000’)2.DayofWeek 返回参数中的星期几,用范围1--7表示,其中1代表星期日3.DayofWeek_ISO返回参数中的星期几,用范围1--7表示,其中1代表星期一--取日期SELECT CURRENT DATE FROM sysibm.sysdummy1;--返回数据类型:DATE--结果集(YYYY-MM-DD):2005-12-22--取时间SELECT CURRENT TIME FROM sysibm.sysdummy1;--返回数据类型:TIME--结果集(HH-MM-SS):10:10:21--取时间戳记SELECT CURRENT TIMESTAMP FROM sysibm.sysdummy1;--返回数据类型:TIMESTAMP--结果集(YYYY-MM-DD HH-MM-SS XXXXXX): 2005-12-22 10:10:22 187002说明:sysibm.sysdummy1表是一个特殊的内存中的表,专门用于存储系统日期和时间。

推荐大家使用VALUES 函数直接来进行操作。

以上的语句可以改写为:--取日期VALUES CURRENT DATE;--取时间VALUES CURRENT TIME;--取时间戳记VALUES CURRENT TIMESTAMP;2、DB2中日期、时间的常用函数介绍VALUES YEAR(CURRENT TIMESTAMP);--返回值:2005--取月份VALUES MONTH(CURRENT TIMESTAMP);--返回值:12--取天VALUES DAY(CURRENT TIMESTAMP);--返回值:22--取星期VALUES DAYOFWEEK(CURRENT TIMESTAMP);--返回值:5--说明:取值范围为1-7,1代表星期日,所以今天是星期四,得出的值为5!VALUES DAYNAME(CURRENT TIMESTAMP);--返回值:星期五--取小时VALUES HOUR(CURRENT TIMESTAMP);--返回值:10--取分钟VALUES MINUTE(CURRENT TIMESTAMP);--返回值:27--取秒VALUES SECOND(CURRENT TIMESTAMP);--返回值:08--取毫秒VALUES MICROSECOND(CURRENT TIMESTAMP);--返回值:890001说明:以上函数可以直接供大家在存储过程以及自定义函数或者触发器中直接调用,所有返回类型均为INTEGER--取日期VALUES DATE(CURRENT TIMESTAMP);--返回数据类型:DATE--返回值:2005-12-22VALUES TIME(CURRENT TIMESTAMP);--返回数据类型:TIME--返回值:10:30:483、DB2中日期、时间的计算--取明年的今天VALUES CURRENT DATE + 1 YEAR;--返回值:2006-12-12--取前年的今天(两种写法都合法)VALUES CURRENT DATE - 2 YEAR;VALUES CURRENT DATE - 2 YEARS;--返回值:2003-12-12--取下一个小时后的时间VALUES CURRENT TIME + 1 HOUR;--返回值:11:38:25--混合应用的示例1VALUES CURRENT DATE + 2 YEARS - 1 MONTH + 10 DAYS;--返回值:2007-12-2(笔者的当前日期为:2005-12-22,大家可以自己计算一下)--混合应用的示例2VALUES CURRENT TIME + 5 HOURS - 3 MINUTES + 10 SECONDS;--返回值:15:39:22(笔者的当前时间为:10:42:12,大家可以自己计算一下)--计算两个日期之间的间隔天数VALUES DAYS(CURRENT DATE) - DAYS('2005-01-01');--返回值:355说明:DB2中日期、时间的计算非常的灵活,大家可以根据实际需求进行自己的计算4、DB2中日期、时间的类型转换--将日期、时间类型转换为字符串型VALUES CHAR(CURRENT DATE);VALUES CHAR(CURRENT TIMESTAMP);--将字符串型转换为日期、时间类型VALUES TIMESTAMP ('2005-12-22-12.00.00.000000');VALUES TIMESTAMP ('2005-12-22 12:00:00');VALUES DATE ('2005-12-22');VALUES DATE ('12/22/2005');--注意:该格式为(MM/DD/YYYY)VALUES TIME ('12:00:00');VALUES TIME ('12.00.00');说明:在实际应用中,TIMESTAMP()、DATE() 和TIME() 函数接受更多种格式。

DB2中关于日期时间格式的函数

DB2中关于日期时间格式的函数

DB2中关于日期时间格式的函数执行日期和时间计算:/*在当前时间的基础上,增减*/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)char(current date,ISO)——转换成yyyy-mm-ddchar(current date,USA)——转换成mm/dd/yyyychar(current date,EUR)——转换成还有char(current date,JIS) 转换成yyyy-mm-ddchar(current date,LOCAL) 转换成mm/dd/yyyyreplace(cast(current date as char(12)),'-','') ――转换成yyyymmddreplace(char(current date,ISO),'-','') ――转换成yyyymmdd要将字符串转换成日期或时间值,可以使用:TIMESTAMP ('2002-10-20-TIMESTAMP ('2002-10-20 12:00:00')DATE ('2002-10-20')DATE ('10/20/2002')TIME ('12:00:00')TIME ('要使用SQL 获得当前的日期、时间及时间戳记,请参考适当的DB2 寄存器:SELECT current date FROM sysibm.sysdummy1SELECT current time FROM sysibm.sysdummy1SELECT current timestamp FROM sysibm.sysdummy1sysibm.sysdummy1 表是一个特殊的内存中的表,用它可以发现如上面演示的DB2 寄存器的值。

DB2常用函数总结

DB2常用函数总结

DB2常⽤函数总结⼀、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。

在ASCII()函数中,纯数字的字符串可不⽤‘’括起来,但含其它字符的字符串必须⽤‘’括起来使⽤,否则会出错。

2、CHAR()将ASCII 码转换为字符。

如果没有输⼊0 ~ 255 之间的ASCII 码值,CHAR()返回NULL 。

3、LOWER()和UPPER()LOWER()将字符串全部转为⼩写;UPPER()将字符串全部转为⼤写。

4、STR()把数值型数据转换为字符型数据。

STR (<float_expression>[,length[, <decimal>]])length 指定返回的字符串的长度,decimal 指定返回的⼩数位数。

如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。

当length 或者decimal 为负值时,返回NULL;当length ⼩于⼩数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;当返回的字符串位数⼩于length ,左边补⾜空格。

⼆、去空格函数1、LTRIM() 把字符串头部的空格去掉。

2、RTRIM() 把字符串尾部的空格去掉。

三、取⼦串函数1、left()LEFT (<character_expression>, <integer_expression>)返回character_expression 左起 integer_expression 个字符。

2、RIGHT()RIGHT (<character_expression>, <integer_expression>)返回character_expression 右起 integer_expression 个字符。

3、SUBSTRING()SUBSTRING (<expression>, <starting_ position>, length)返回从字符串左边第starting_ position 个字符起length个字符的部分。

db2函数详解

db2函数详解

db2函数详解DB2 常用函数1、A VG 返回平均值 (1)2、COUNT (2)3、COUNT_BIG (3)4、MAX (4)5、MIN (5)6、SUM (6)7、ABS 或ABSV AL (7)8、APPLICATION_ID (8)9、ASCII (9)10、BIGINT (10)11、BLOB (11)12、CEILING or CEIL (12)13、CHAR (13)14、CHARACTER_LENGTH (14)15、CHR (15)16、CLOB (16)17、COALESCE (17)18、CONCAT (132)19、DATE (19)20、DAY (20)21、DAYOFWEEK (21)22、DAYOFWEEK_ISO (22)23、DAYOFYEAR (23)24、DAYS (24)25、DBCLOB (25)26、DECIMAL (26)27、DECRYPT_BIN and DECRYPT_CHAR (27)28、DIGITS (28)29、DOUBLE (29)30、ENCRYPT (30)31、EVENT_MON_STATE (31)32、FLOAT (32)33、FLOOR (33)34、GENERATE_UNIQUE (18)35、GETHINT (16)36、GRAPHIC (36)37、HEX (37)38、HOUR (38)39、IDENTITY_V AL_LOCAL (39)40、INSERT (40)41、INTEGER (41)43、LCASE (43)44、LCASE or LOWER (44)45、LEFT (45)46、LENGTH (46)47、LOCATE (47)48、LONG_V ARCHAR (48)49、LONG_V ARGRAPHIC (21)50、LTRIM(SYSFUN模式) (50)51、LTRIM (51)52、MICROSECOND (52)53、MIDNIGHT_SECONDS (53)54、MINUTE (54)55、MOD (55)56、MONTH (56)57、MULTIPL Y_ALT (57)58、NULLIF (58)59、OCTET_LENGTH (59)60、POSITION (60)61、POSSTR (61)62、POWER (62)63、QUARTER (63)64、RAND (29)65、REAL (65)66、REPEAT (66)67、REPLACE (67)68、RIGHT (68)69、ROUND (69)70、RTRIM(SYSFUN模式) (70)71、RTRIM(SYSIBM模式) (71)72、SECOND (72)73、SIGN (73)74、SMALLINT (74)75、SPACE (75)76、SQRT (76)77、STRIP (77)78、SUBSTR (31)79、SUBSTRING (79)80、TIME (80)81、TIMESTAMP (81)82、TIMESTAMP_FORMA T (82)83、TIMESTAMP_ISO (83)84、TIMESTAMPDIFF (84)85、TO_CHAR (85)87、TRIM (87)88、TRUNCATE or TRUNC (88)89、UCASE or UPPER (89)90、V ALUE (90)91、V ARCHAR (91)92、V ARCHAR_FORMA T (92)93、WEEK (34)94、WEEK_ISO (94)95、YEAR (95)1、AVG 返回平均值语法:.-ALL------.>>-AVG--(--+----------+--expression--)-------------------------><'-DISTINCT-'说明:此函数,用于返回所查列的平均值,返回值类型跟原有字段类型相同,如果所求字段为integer类型,则返回平均值的整数部分。

DB2常用函数详解(三):日期时间函数

DB2常用函数详解(三):日期时间函数

DB2常⽤函数详解(三):⽇期时间函数DATE函数语法:DATE(ARG)DATE函数返回⼀个⽇期、时间戳、⽇期字符串、时间戳字符串中的⽇期。

Sql代码1. eg:2. SELECT DATE('2005-06-12 16.24.18.121212') FROM TESTeg:SELECT DATE('2005-06-12 16.24.18.121212') FROM TESTTIME函数语法:TIME(ARG)TIME函数返回⼀个时间、时间戳或⼀个时间、时间戳字符串参数的时间。

Sql代码1. eg:2. SELECT TIME('2005-06-12 16.24.18.121212') FROM TESTeg:SELECT TIME('2005-06-12 16.24.18.121212') FROM TESTTIMESTAMP函数语法:TIMESTAMP(EXPRES1[,EXPRES2])TIMESTAMP函数返回⼀个或两个参数中的时间戳。

Sql代码1. eg:2. SELECT TIMESTAMP('2005-06-12 16.24.18.121212') FROM TESTeg:SELECT TIMESTAMP('2005-06-12 16.24.18.121212') FROM TEST注:如果只有⼀个参数,这个参数必须是⼀个时间戳或⼀个时间戳字符串;如果有两个参数,第⼀个参数必须是⼀个⽇期或⽇期字符串,第⼆个参数必须是⼀个时间或时间戳字符串。

YEAR函数语法:YEAR(ARG)YEAR函数返回⼀个⽇期、时间戳、⽇期字符串、时间戳字符串的年部分。

Sql代码1. eg:2. SELECT YEAR('2005-06-12') FROM TESTeg:SELECT YEAR('2005-06-12') FROM TESTMONTH函数语法:MONTH(ARG)MONTH函数返回⼀个⽇期、时间戳、⽇期字符串、时间戳字符串的⽉部分。

DB2函数大全

DB2函数大全

DB2函数大全AVG()返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION()返回一对数值的关系系数.SELECT CORRELATION(SALARY,BONUS)FROM BSEMPMS; COUNT()返回一组行或值的个数.SELECTCOUNT(*)FROMBSEMPMS; COVAR(),COVARIANCE()返回一对数值的协方差.SELECTCOVAR(SALARY,BONUS)FROMBSEMPMS;MAX()返回一组数值中的最大值.SELECTMAX(SALARY)FROMBSEMPMS; MIN()返回一组数值中的最小值.SELECTMIN(SALARY)FROMBSEMPMS; STDDEV()返回一组数值的标准偏差. SELECTSTDDEV(SALARY)FROMBSEMPMS; SUM()返回一组数据的和.SELECTSUM(SALARY)FROMBSEMPMS; VAR(),VARIANCE()返回一组数值的方差. SELECTVARIANCE(SALARY)FROMBSEMPMS;ABS(),ABSVAL()返回参数的绝对值.SELECTABS(-3.4)FROMBSEMPMS;ACOS()返回参数的反余弦值.SELECTACOS(0.9)FROMBSEMPMS;ASCII()返回整数参数最左边的字符的ASCII码. SELECTASCII('R')FROMBSEMPMS;ASIN()返回用弧度表示的角度的参数的反正弦函数. SELECTASIN(0.9)FROMBSEMPMS;ATAN()返回参数的反正切值,该参数用弧度表示的角度的参数.SELECTATAN(0.9)FROMBSEMPMS;ATAN2()返回用弧度表示的角度的X和Y坐标的反正切值. SELECTATAN2(0.5,0.9)FROMBSEMPMS;BIGINT()返回整型常量中的数字或字符串的64位整数表示SELECTBIGINT(EMP_NO)FROMBSEMPMS;CEILING() OR CEIL()返回比参数大或等于参数的最小的整数值CHAR()返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示. SELECTCHAR(SALARY,',')FROMBSEMPMS;CHR()返回具有由参数指定的ASCII码的字符SELECTCHAR(167)FROMBSEMPMS;CONCAT()SELECTCONCAT(EMP_NO,EMP_NAM)FROMBSEMPMS; YEAR()返回数值的年部分.SELECTYEAR('2003/01/02')FROMBSEMPMS; VARCHAR()返回字符串,日期型,图形串的可变长度的字符串表示SELECTVARCHAR(EMP_NAM,50)FROMBSEMPMS;UCASE() OR UPPER()返回字符串的大写TRUNCATE() OR TRUNC()从表达式小数点右边的位置开始截断并返回该数值. SELECTTRUNCATE(345.6789,2)FROMBSEMPMS;TIME()SELECTTIME('2001-03-19.12.30.123456')FROMBSEMPMS;SUBSTR(EXP1,EXP2)返回EXP1串自EXP2处开始的子串.SQRT()返回该参数的平方根.SELECTSQRT(36)FROMBSEMPMS;SPACE()返回由参数指定的长度,包含空格在内的字符串.SELECTSPACE(10)FROMBSEMPMS; SECOND()返回一个数值的秒部分.SELECTSECOND('18:34:32')FROMBSEMPMS;RTRIM()删除字符串尾部的空格.SELECTRTRIM('COMMENT')FROMBSEMPMS;ROUND(EXP1,EXP2)返回EXP1小数点右边的第EXP2位置处开始的四舍五入值. SELECTROUND(2345.6789,2)FROMBSEMPMS REPLACE(EXP1,EXP2,EXP3)用EXP3替代EXP1中所有的EXP2SELECTCHAR(REPLACE('ROMANDD','NDD','CCB'),10) FROMBSEMPMS;REPEAT(EXP1,EXP2)返回EXP1重复EXP2次后的字符串.SELECTCHAR(REPEAT('REPEAT',3),21)FROMBSEMPMS; REAL()返回一个数值的单精度浮点数表示.SELECTREAL(10)FROMBSEMPMS;RAND()返回0和1之间的随机浮点数.SELECTRAND()FROMBSEMPMS; POWER(EXP1,EXP2)返回EXP1的EXP2次幂.SELECTPOWER(2,5)FROMBSEMPMS; POSSTR(EXP1,EXP2)返回EXP2在EXP1中的位置.SELECT('ABCDEFGH','D')FROMBSEMPMS; NULLIF(EXP1,EXP2)如果EXP1=EXP2,则为NULL,否则为EXP1NODENUMBER()返回行的分区号.SELECTNODENUMBER(EMP_NO)FROMBSEMPMS; MONTH()返回一个数值的月部分.SELECTMONTH('2003/10/20')FROMBSEMPMS; MOD(EXP1,EXP2)返回EXP1除以EXP2的余数.SELECTMOD(20,8)FROMBSEMPMSMINUTE()返回一个数值的分钟部分.SELECTMINUTE('18:34:23')FROMBSEMPMS;LTRIM()删除字符串前面的空格.SELECTLTRIM('CDDD')FROMBSEMPMS;HOUR()返回一个数值的小时部分.SELECTHOUR('18:34:23')FROMBSEMPMS;DOUBLE()如果参数是一个数字表达式,返回与其相对应的浮点数,如果参数是字符串表达式,则返回该数的字符串表达式.SELECTDOUBLE('5678')FROMBSEMPMS;EXP()返回参数的指数函数.SELECTEXP(2)FROMBSEMPMS;FLOAT()返回一个数的浮点表示.SELECTFLOAT(789)FROMBSEMPMS;FLOOR()返回小于或等于参数的最大整数.SLECTFLOOR(88.93)FROMBSEMPMS;HEX()返回一个表示为字符串的值的16进制表示.SELECTHEX(16)FROMBSEMPMS;DAYNAME返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,Friday)。

DB2日期和时间应用

DB2日期和时间应用

DB2日期和时间应用Current_date + 1 YEARCurrent_date + 3 YEARS + 2 MONTHS + 15 DAYS Current_time + 5 HOURS - 3 MINUTES + 10 SECONDS 1、DB2中日期、时间寄存器的使用--取日期SELECT CURRENT_DATE FROM sysibm.sysdummy1; --返回数据类型:DATE--结果集(YYYY-MM-DD): 2005-12-22--取时间SELECT CURRENT_TIME FROM sysibm.sysdummy1; --返回数据类型:TIME--结果集(HH-MM-SS): 10:10:21--取时间戳记SELECT CURRENT_TIMESTAMP FROM sysibm.sysdummy1; --返回数据类型:TIMESTAMP--结果集(YYYY-MM-DD HH-MM-SS XXXXXX): 2005-12-22 10:10:22 187002 说明:sysibm.sysdummy1表是一个特殊的内存中的表,专门用于存储系统日期和时间。

推荐大家使用 VALUES 函数直接来进行操作。

以上的语句可以改写为:--取日期VALUES CURRENT_DATE;--取时间VALUES CURRENT_TIME;--取时间戳记VALUES CURRENT_TIMESTAMP;2、DB2中日期、时间的常用函数介绍--取年份VALUES YEAR(CURRENT_TIMESTAMP);--返回值:2005--取月份VALUES MONTH(CURRENT_TIMESTAMP); --返回值:12--取天VALUES DAY(CURRENT_TIMESTAMP);--返回值:22--取星期VALUES DAYOFWEEK(CURRENT_TIMESTAMP);--返回值:5--说明:取值范围为1-7,1代表星期日,所以今天是星期四,得出的值为5~VALUES DAYNAME(CURRENT_TIMESTAMP); --返回值:星期五--取小时VALUES HOUR(CURRENT_TIMESTAMP); --返回值:10--取分钟VALUES MINUTE(CURRENT_TIMESTAMP); --返回值:27--取秒VALUES SECOND(CURRENT_TIMESTAMP); --返回值:08--取毫秒VALUES MICROSECOND(CURRENT_TIMESTAMP); --返回值:890001说明:以上函数可以直接供大家在存储过程以及自定义函数或者触发器中直接调用,所有返回类型均为 INTEGER--取日期VALUES DATE(CURRENT_TIMESTAMP); --返回数据类型:DATE--返回值:2005-12-22--取时间VALUES TIME(CURRENT_TIMESTAMP); --返回数据类型:TIME--返回值:10:30:483、DB2中日期、时间的计算--取明年的今天VALUES CURRENT_DATE + 1 YEAR; --返回值:2006-12-12--取前年的今天(两种写法都合法)VALUES CURRENT_DATE - 2 YEAR; VALUES CURRENT_DATE - 2 YEARS; --返回值:2003-12-12--取下一个小时后的时间VALUES CURRENT_TIME + 1 HOUR;--返回值:11:38:25--混合应用的示例1VALUES CURRENT_DATE + 2 YEARS – 1_MONTH + 10_DAYS; --返回值:2007-12-2(笔者的当前日期为:2005-12-22,大家可以自己计算一下) --混合应用的示例2VALUES CURRENT_TIME + 5 HOURS - 3 MINUTES + 10 SECONDS;--返回值:15:39:22(笔者的当前时间为:10:42:12,大家可以自己计算一下) --计算两个日期之间的间隔天数VALUES DAYS(CURRENT DATE) - DAYS('2005-01-01');--返回值:355说明:DB2中日期、时间的计算非常的灵活,大家可以根据实际需求进行自己的计算4、DB2中日期、时间的类型转换--将日期、时间类型转换为字符串型VALUES CHAR(CURRENT_DATE);VALUES CHAR(CURRENT_TIMESTAMP);--将字符串型转换为日期、时间类型VALUES TIMESTAMP ('2005-12-22-12.00.00.000000');VALUES TIMESTAMP ('2005-12-22 12:00:00'); VALUES DATE ('2005-12-22');VALUES DATE ('12-22-2005');--注意:该格式为(MM-DD-YYYY) VALUES TIME('12:00:00');VALUES TIME ('12.00.00');说明:在实际应用中,TIMESTAMP()、DATE() 和 TIME() 函数接受更多种格式。

相关主题
  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 寄存器的值。

您也可以使用关键字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如果想将日期或时间值与其它文本相衔接,那么需要先将该值转换成字符串。

为此,只要使用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')DATE ('2002-10-20')DATE ('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 年的差距呢?当DATE 函数得到了一个字符串作为输入参数的时候,它会假定这是一个有效的DB2 日期的表示,并对其进行适当地转换。

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

在上面的例子中,我们的输入是2001-09-22,被理解为(2001-9)-22, 等于1970 天,于是该函数被理解为DATE(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 是VARCHAR_FORMAT 的同义词。

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

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 当前的日期格式转化成系统支持的特定格式。

相关文档
最新文档