• Hive日期、时间转换:YYYY-MM-DD与YYYYMMDD;hh.mm.ss与hhmmss的相互转换


    思路

    YYYY-MM-DD与YYYYMMDD;hh-mm-ss与hhmmss的相互转换有两种办法,第一种是利用UNIX时间戳函数,第二种是利用字符串拼接函数。

    YYYY-MM-DD与YYYYMMDD相互转换例子

    以2020-08-23和20200823相互转换为例

    --方法1: from_unixtime + unix_timestamp
    --2020082转成2020-08-23 
    select from_unixtime(unix_timestamp('20200823','yyyymmdd'),'yyyy-mm-dd') from db.table_name;
    
    --2020-08-23转成20200823
    select from_unixtime(unix_timestamp('2020-08-23','yyyy-mm-dd'),'yyyymmdd') from db.table_name;
    
    --方法2: substr + concat
    --2020082转成2020-08-23
    select concat(substr('20200823',1,4),'-',substr('20200823',5,2),'-',substr('20200823',7,2)) from db.table_name;
    
    --2020-08-23转成20200823
    select concat(substr('2020-08-23',1,4),substr('2020-08-23',6,2),substr('2020-08-23',9,2)) from db.table_name;
    

    hh.mm.ss与hhmmss相互转换例子

    以09.41.30和094130相互转换为例

    --方法1: from_unixtime + unix_timestamp
    --094130转成09.41.30
    select from_unixtime(unix_timestamp('094130','hhmmss'),'hh.mm.ss') from db.table_name;
    
    --09.41.30转成094130
    select from_unixtime(unix_timestamp('09.41.30','hh.mm.ss'),'hhmmss') from db.table_name;
    
    --方法2: substr + concat
    --094130转成09.41.30
    select concat(substr('094130',1,2),'.',substr('094130',3,2),'.',substr('094130',5,2)) from db.table_name;
    
    --09.41.30转成094130
    select concat(substr('09.41.30',1,2),substr('09.41.30',4,2),substr('09.41.30',7,2)) from db.table_name;
    

    使用方法1: from_unixtime + unix_timestamp,总的思路就是先将日期或时间用unix_timestamp转换为时间戳,然后再用from_unixtime以指定格式输出结果。

    使用方法2: substr + concat,总的思路就是去除或添加相关连接符,然后输出拼装后的结果。

  • 相关阅读:
    Centos7 定时任务
    Linux启动配置文件和运行等级runlevel
    Linux 网卡命名规则
    将博客搬至CSDN
    Lua调用C++动态链接库.so
    使用shell脚本执行批量mongosh语句
    TCP和UDP详解
    经受时延的确认(Delay ACK)
    18张图带你了解衡量网络性能的四大指标:带宽、时延、抖动、丢包
    TCP学习
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/13548328.html
Copyright © 2020-2023  润新知