DB2函数

日期函数

获取、提取日期

#获取当前时间
current date
current time
current timestamp
#提取日期
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)
#要使当前时间或当前时间戳记调整到GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器: 
 current time -current timezone;  
 current timestamp -current timezone;  
#其他不常用的
QUARTER(current timestamp) #季度
DAYOFYEAR(current timestamp) #
DAYOFWEEK(current timestamp) # 这个日期周的第几天,1-7
DAYOFWEEK_ISO(current timestamp) #这个日期周的第几天,1-7
DAYNAME(current timestamp) #星期几
MONTHNAMEE(current timestamp) #月份名
MIDNIGHT_SECONDS(current timestamp)#返回午夜和参数指定的时间值之间的秒数,用范围再 0 到 86400 之间的整数值表示

日期计算

  1. 直接计算

    current date + 1 YEAR
    current date + 3 YEAR + 2 MONTHS + 15 DAYS
    current time + 5 HOURS - 3 MINUTES + 10 SECONDS
    # YEAR-年,MONTHS-月,DAYS-日,MINUTES-分,SECONDS-秒,
    
  2. 使用函数

    #TIMESTAMPDIFF(n,char(时间1-时间2))
    SELECT TIMESTAMPDIFF(n,char(current timestamp - CREATETIME));
    # current timestamp 当前时间戳
    #n:结果的时间单位
    1 = 秒的小数部分
    2 =4 =8 =16 =# 当计算日期之间的天数时,应该使用days函数
    32 =64 =128 = 季度
    256 =#days(时间字符串) 提取天数,
    SELECT (days('2022-05-01') - days('2022-03-01')) AS diffDays;
    

    注意:

    当时间相差不大时使用timestampdiff即可解决问题;当出现跨月且跨度超过一个月时timestampdiff函数视每个月为30天计算,就会出现日期计算误差,但days函数不受大小月、跨月和平年闰年的影响;建议使用days函数。

日期和char转换

#日期转char
char(current date)
char(current time)
char(current date + 12 hours)
to_char(current date,'yyyymmdd') -- 日期转换为20170606格式
to_char(current timestamp,'yyyymmddhh24miss') -- 24小时制
to_char(current timestamp,'yyyymmddhhmiss') -- 12小时制
substr(cast(current time as varchar(20)),1,2)||
    substr(cast(current time as varchar(20)),4,2)||
    substr(cast(current time as varchar(20)),7,2)
#char转日期
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')
to_date('20170809','yyyy-mm-dd')
cast('18:28:26' as time)
cast('20220601082826' as timestamp)

字符串函数

  • VALUE函数
VALUE(EXPRESSION1,EXPRESSION2) 
# VALUE函数是用返回一个非空的值,当其第一个参数非空,直接返回该参数的值,如果第一个参数为空,则返回第二个参数的值。
  • COALESCE函数
COALESCE(ARG1,ARG2...) 

COALESCE返回参数集中第一个非null参数。用法类似于VALUE函数。

  • LENGTH函数
LENGTH(ARG) #返回参数的长度。
  • LCASE、LOWER函数
LCASE()、LOWER() #返回定长、变长字符串的小写形式。
  • UCASE、UPPER函数
UCASE()、UPPER() #返回定长、变长字符串的大写形式。
  • LTRIM、RTRIM函数
LTRIM()、RTRIM() #从CHAR、VARCHAR、GRAPHIC或者VARGRAPHIC中去掉左侧或右侧的空格。

LTRIM、RTRIM函数从CHAR、VARCHAR、GRAPHIC或者VARGRAPHIC中去掉左侧或右侧的空格。

  • LEFT、RIGHT函数
LEFT(ARG,LENGTH)RIGHT(ARG,LENGTH) 
#返回ARG最左边、右边的LENGTH个字符串,ARG可以是CHAR或BINARY STRING。
  • CONCAT函数
CONCAT(ARG1,ARG2) #CONCAT函数返回两个字符串的连接。
  • INSERT函数
INSERT(ARG1,POS,SIZE,ARG2) 
#返回一个字符串,将ARG1从POS处删除SIZE个字符,将ARG2插入该位置。
  • LOCATE函数
LOCATE(ARG1,ARG2,<POS>) 
#在ARG2中查找ARG1第一次出现的位置,如果指定POS,则从ARG2的POS处开始查找ARG1第一次出现的位置。
  • POSSTR函数
POSSTR(EXP1,EXP2) # 返回EXP2在EXP1中的位置。
  • REPEAT函数
REPEAT(ARG1,NUM_TIMES) # 返回ARG1被重复NUM_TIMES次的字符串。
  • REPLACE函数
REPLACE(EXP1,EXP2,EXP3) #用EXP3代替EXP1中所有的EXP2。
  • SPACE函数
SPACE(SIZE) #SPACE函数返回一个包含SIZE个空格的字符串。
  • SUBSTR函数
SUBSTR(ARG1,POS,<LENGTH>) 
#返回ARG1中POS位置开始的LENGTH个字符,如果没有指定LENGTH,则返回剩余的字符。

类型转换

转换字符串类型
  • CAST表达式用来转换类型使用

    CAST( CURRENT TIME AS CHAR(8) ) #转换为字符串类型
    
  • CHAR函数

    CHAR(ARG) #返回日期时间型、字符串、整数、十进制或双精度浮点数的字符串表示。
    
  • CHR函数

    CHR(ARG) #由参数指定的ASCII码的字符,参数可以是INTEGER或SMALLINT。
    
  • VARCHAR函数

    VARCHAR(ARG,LENGTH) #返回字符串、日期型、图形串的可变长度的字符串表示。
    -- 50为截取长度,如果name字符串的长度大于50,则返回“SQL0445W 值已被截断。SQLSTATE=01004”。 
    SELECT VARCHAR(NAME,50) FROM TEST  
    
  • DIGITS函数

    DIGITS() #SMALLINT、INTEGER、BIGIT或者DECIMAL参数的字符串值。
    
转换为数字类型:
  • DOUBLE、FLOAT函数

    DOUBLE()FLOAT() #如果参数是一个数字表达式,返回与其对应的浮点数,否则返回错误代码。
    
  • INT函数

    INT() #整型常量中的数字、字符串或者日期、时间的整数表示。
    
  • BIGINT函数

    BIGINT() #返回整型常量中的数字、字符串或者时间戳的64位长整数表示。
    
  • SMALLINT函数

    SMALLINT() #返回整型常量中的数字、字符串短整数表示。
    
  • REAL函数

    REAL() #返回一个数值的单精度浮点数表示。
    
  • DEC[IMAL]函数

    DEC[IMAL]()
    #返回一个数值、DECIMAL的字符串、INTEGER的字符串、FLOAT-POINT的字符串、日期、时间或时间戳的DECIMAL数值。
    
  • HEX函数

    HEX() #返回一个字符串的值的16进制表示
    
  • FLOOR函数

    FLOOR() # FLOOR函数小于或等于参数的最大整数。
    
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值