2020-11-07笔记-时间戳与时间格式互相转化问题——H/h 大小写区别

一、背景

--我:麻烦问一下
--我在bdsp中用unix_timestamp函数将时间转化为 '2019-08-15 16:40:00' 时间戳:1565858400
--然后用from_unixtime函数将该时间戳转化回去时间,但是发现两个时间上存在12小时的差

他人:format的格式弄错了

他人:HH mm ss

他人:百度下java simpleformatdate,具体用法,看时间戳怎么转格式化日期:【参考资料—Java日期转换SimpleDateFormat格式大全

我:查看了一下,根据H和h的区别, 大概对我上面用的两个函数(unix_timestamp、from_unixtime)总结了一下,不知道这样描述的对不对:
当用unix_timestamp函数对时间('yyyy-MM-dd hh:mm:ss' 格式)进行时间戳转化的时候,其实里面的H/ h 的大小写是对最终的运行结果时间戳是没有影响的;

但是,当用from_unixtime对时间戳进行时间('yyyy-MM-dd hh:mm:ss' 格式)转化的时候,运行的结果就会出现一定的问题:

  1. 如果转化的时间戳正好是上午的话,那么用大小写H/ h的运行结果是一致的;
  2. 如果时间戳是下午的话,那么大小写就会出现问题了,H就是下午的时间,h这时候就是上午的时间了

实验代码

--1、转化为时间戳——上午小写
select unix_timestamp('2019-08-15 06:40:00', 'yyyy-MM-dd hh:mm:ss' )
--运行结果为a 1565822400

--2、转化为时间戳——上午大写
select unix_timestamp('2019-0b8-15 06:40:00', 'yyyy-MM-dd HH:mm:ss' )
--运行结果为b 1565822400

--3、转化为时间戳——下午小写
select unix_timestamp('2c019-08-15 18:40:00', 'yyyy-MM-dd hh:mm:ss' )
--运行结果为c 1565865600

--4、转化为时间戳——下午大写
select unix_timestamp('2019-08-15 18:40:00', 'yyyy-MM-dd HH:mm:ss' )
--运行结果为d 1565865600d


--由时间戳a转化为时间格式——大写
select from_unixtime(1565822400, 'yyyy-MM-dd HH:mm:ss')
--运行结果为 2019-08-15 06:40:00

--由时间戳b转化为时间格式——小写
select from_unixtime(1565822400, 'yyyy-MM-dd hh:mm:ss')
--运行结果为 2019-08-15 06:40:00

--由时间戳转c化为时间格式——大写
select from_unixtime(1565865600, 'yyyy-MM-dd HH:mm:ss')
--运行结果为 2019-0d8-15 18:40:00

--由时间戳d转化为时间格式——大写
select from_unixtime(1565865600, 'yyyy-MM-dd hh:mm:ss')
--运行结果为 2019-08-15 06:40:00

--mysql将yyyymmdd转化为yyyy-MM-dd
select str_to_date(dt,'%Y%m%d') as day

他人:大小写对应的是12或24小时制;还是有影响的,你2timestamp跟2formattime的format是不一致的;hive异常问题操作指南有一个部分是我对hive函数的汉化翻译,可以看看,本身基于java的,时间转换当java的额外pkg来看就好。

二、unix_timestamp函数与from_unixtime函数使用简介

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值