美文网首页
DB2时间的运算

DB2时间的运算

作者: 黑色礼帽 | 来源:发表于2017-06-16 20:55 被阅读0次
    1、获取当前日期:

    select current date from sysibm.sysdummy1;
    values current date;
    values current date
    values current time
    values current timestamp

    --ps:sysibm.sysdummy1 表是一个内存的特殊表,常用于访问DB2中的寄存器,从而返回特定需要内容。
       另,VALUES也可用于访问寄存器

    2、字符串转换为日期/时间格式

    1)将字符串转换为date类型

    values date('2017-08-09')
    values to_date('20170809','yyyy-mm-dd')

    2)将字符串转换为time类型

    values cast('18:28:26' as time)
    values time('08:28:26')

    3)将字符串转换为timestamp类型

    values cast('20170616082826' as timestamp)
    values timestamp('20170616082826')

    3、时间/日期格式转换为字符串

    values to_char(current date,'yyyymmdd') --日期转换为20170606格式
    values to_char(current timestamp,'yyyymmddhh24miss') --24小时制
    values to_char(current timestamp,'yyyymmddhhmiss') --12小时制
    values 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)

    4、时间格式的运算

    1)对于时间类型的数据,加减年月日可以直接进行

    values current date - 1 days
    values current date - 1 month
    values current date - 1 year

    2)日期格式数据相减时对于DAY的差异

    --日期中的天数的差
    values day(date('2017-06-09')) - day(date('2017-05-01'))
    --两个日期相差的天数
    values days(date('2017-07-09')) - days(date('2016-07-09'))

    3)常用日期相减的函数实例

    --两个日期相差的年数
    values timestampdiff(256,char(timestamp('2017-07-09')- timestamp('2016-07-08')))
    --两个日期相差的季度数
    values timestampdiff(128,char(timestamp('2017-07-09')- timestamp('2016-07-08')))
    --两个日期相差的月数
    values timestampdiff(64,char(timestamp('2017-07-09')- timestamp('2016-07-08')))
    --两个日期相差的星期数
    values timestampdiff(32,char(timestamp('2017-07-09')- timestamp('2016-07-08')))
    --两个日期相差的天数
    values timestampdiff(16,char(timestamp('2017-07-09')- timestamp('2016-07-08')))
    --两个时间相差的小时数
    values timestampdiff(8,char(timestamp('2017-07-09 16:24:21')- timestamp('2017-07-08 00:24:21')))
    --两个日期相差的分钟数
    values timestampdiff(4,char(timestamp('2017-07-08 16:24:21')- timestamp('2017-07-08 16:00:49')))
    --两个日期相差的秒数
    values timestampdiff(2,char(timestamp('2017-07-08 16:24:21')- timestamp('2017-07-08 16:24:00')))

    5)补充说明

    --ps:两个时间之间相减
    values date('2017-06-09') - date('2016-05-08')
    return:10101 --1年1个月零1天

    values date('2017-04-28') - date('2016-04-15')
    return:10013 --1年零13天

    values date('2017-06-28') - date('2017-04-05')
    return:223 --2个月23天

    values date('2017-04-28') - date('2017-04-15')
    return:13 --13天

    两个日期直接相减,得到的结果可以直接表示为时间间隔
    由此,可以根据条件需要在数据库中自定义函数,来计算日期间的加减运算。

    5、补充1:
    Vertica 数据库

    --当前时间
    select getdate()

    --字符串转换为时间
    select cast('094759' as time)
    select cast('20170615' as date)

    --两个时间相差天数
    select timestampdiff(day,date('2015-12-29'),date('2017-02-01'))
    select date('2017-02-01') - date('2015-12-29')

    6、补充2:
    SQL Server 运算

    1)转换

    --将字符串转换为timestamp格式
    select convert(char(8),getdate(),112)+convert(char(8),dateadd(mi,-10,getdate()),8)
    --将date转换为字符串类型
    select convert(char(8),getdate(),8)

    2)运算

    --当前时间减10分钟
    select dateadd(MINUTE,-10,getdate())
    select dateadd(MI,-10,getdate())
    --当前时间减10小时
    select dateadd(HOUR,-10,getdate())
    select dateadd(HH,-10,getdate())
    --当前时间减10天
    select dateadd(DAY,-10,getdate())
    select dateadd(DW,-10,getdate())
    select dateadd(DY,-10,getdate())
    select dateadd(DD,-10,getdate())
    select dateadd(D,-10,getdate())

    3)时间格式转换字符串信息

    select CONVERT(VARCHAR(24),GETDATE(),114)
    100 或者 0 mon dd yyyy hh:miAM (或者 PM)
    101 mm/dd/yy
    102 yy.mm.dd
    103 dd/mm/yy
    104 dd.mm.yy
    105 dd-mm-yy
    106 dd mon yy
    107 Mon dd, yy
    108 hh:mm:ss
    109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
    110 mm-dd-yy
    111 yy/mm/dd
    112 yymmdd
    113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
    114 hh:mi:ss:mmm(24h)
    120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
    121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
    126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
    130 dd mon yyyy hh:mi:ss:mmmAM
    131 dd/mm/yy hh:mi:ss:mmmAM

    相关文章

      网友评论

          本文标题:DB2时间的运算

          本文链接:https://www.haomeiwen.com/subject/zkimqxtx.html