Hive 如何将日期和时间列合并为一列,然后将其转换为EST格式?

Hive 如何将日期和时间列合并为一列,然后将其转换为EST格式?,hive,hiveql,Hive,Hiveql,如果我有如下所示的df 选择'case\u id'作为id,'updt\u dt'作为更新日期,'updt\u tm'作为更新时间 从case_dly_snap 限制2“ 我的df如下所示: 其中,update\u date为日期格式,update\u time为字符串格式 如何将其转换为日期+时间格式 预期产量 您可以尝试这种方法 使用配置单元内置函数格式化更新时间和concat更新日期将其转换为时间戳 例如 val lstData=列表((1,“2018-05-14”,“012230.6

如果我有如下所示的df

选择'case\u id'作为id,'updt\u dt'作为更新日期,'updt\u tm'作为更新时间
从case_dly_snap
限制2“
我的df如下所示:

其中,
update\u date
为日期格式,
update\u time
为字符串格式

如何将其转换为日期+时间格式

预期产量


您可以尝试这种方法

使用配置单元
内置函数
格式化
更新时间
和concat
更新日期
将其转换为
时间戳

例如

val lstData=列表((1,“2018-05-14”,“012230.627”),(2,“2018-05-15”,“070026.886”),(3,“2018-05-16”,“023525.669”))
val cols=数组(“ID”、“更新日期”、“更新时间”)
val dfTime=sc.parallelize(lstData).toDF(cols:*)
dfTime.show()
dfTime.createOrReplaceTempView(“df_时间”)
spark.sql(
“”“选择ID、更新日期、更新时间,
|到utc时间戳(concat\u ws('',CAST(更新日期为字符串),concat\u ws('':'),substr(拆分(更新时间,'\.')[0],0,2),substr(拆分(更新时间,'\.')[0],3,2),substr(拆分(更新时间,'\.[0],5,2)),GMT)作为tms
|从df_time”“。stripMargin)
.show()
+---+-----------+-----------+-------------------+
|ID |更新|日期|更新|时间| tms|
+---+-----------+-----------+-------------------+
|  1| 2018-05-14| 012230.627|2018-05-14 01:22:30|
|  2| 2018-05-15| 070026.886|2018-05-15 07:00:26|
|  3| 2018-05-16| 023525.669|2018-05-16 02:35:25|
+---+-----------+-----------+-------------------+

我收到以下错误:执行查询时在服务器中抛出语法或语义分析错误。来自服务器的错误消息:编译语句时出错:失败:SemanticException[error 10016]:第1:93行参数类型不匹配“updt\u dt”:函数CONCAT\u WS的参数2必须是“string或array”,而不是“date”“已找到。Hi@Piccin1992,在我的示例中,
update\u date
字段是一个
字符串,因此您应该将
update\u date
转换为字符串:
cast(update\u date AS string)
,它应该按预期工作。我更新了答案。