最近在工作遇到一个timestamp字段显示的问题,这里记录一下。
因为任务需要中间表a的分区是d(天),h(小时),m5(五分钟),结果表b的分区是d,t,(这里的t表示类型,不是时间),但是时间需要格式化成timestamp类型的字段datess方便查看,所以在将数据从a表查出来之后需要做时间转化,涉及到使用from_unixtime(unix_timestamp(concat(d,h,m5),'yyMMddHHmm'),'yyyy-MM-dd HH:mm:ss') as datess,按理来说一个特定的数据不间断的情况下,一天应该有12*24=288个五分钟点,举例 2023-08-17 00:00:00、2023-08-17 00:05:00、2023-08-17 00:10:00...2023-08-17 23:50:00、2023-08-17 23:55:00。但是数据在写入b表之后无论是从hive客户端看还是从Hue查看数据的显示都有问题,按照时间顺序显示的是2023-08-16 16:00:00,2023-08-16 16:05:00,2023-08-16 16:10:00...2023-08-16 23:55:00,2023-08-17 00:00:00,2023-08-17 00:05:00,2023-08-17 00:10:00,...,2023-08-17 15:50:00,2023-08-17 15:55:00。
这里的datess就是timestamp类型,这里之所以说是显示问题,因为如果直接把数据查出来写到另外一个表里面或者做计算的时候时间都是正常的,只是显示出来有问题。
这里我新建了一个跟b表字段名一样的表c,但是datess的数据类型改成了string,将b表的数据全部查询并写入新表,可以看到c表时间显示正常。
在网上看了一下,有人说加一个参数即可,参考:blog.csdn.net/javastart/a…