如何在Zeppelin Spark Sql中向Datetime添加小时数
我有一个查询,其中有一列将universal datetime字段(不是时间戳)转换为基于时区的本地时间。在Oracle中,我可以使用下面这段代码这样的间隔来实现这一点,但Spark不允许使用间隔。如何在Spark.SQL中执行此操作如何在Zeppelin Spark Sql中向Datetime添加小时数,datetime,apache-spark,pyspark,apache-spark-sql,Datetime,Apache Spark,Pyspark,Apache Spark Sql,我有一个查询,其中有一列将universal datetime字段(不是时间戳)转换为基于时区的本地时间。在Oracle中,我可以使用下面这段代码这样的间隔来实现这一点,但Spark不允许使用间隔。如何在Spark.SQL中执行此操作 case when c.timezone in (4,5) then to_char(b.universal_datetime + NUMTODSINTERVAL(3, 'HOUR'),'yyyy/mm/dd HH24:MI:SS') when c.timez
case when c.timezone in (4,5) then to_char(b.universal_datetime +
NUMTODSINTERVAL(3, 'HOUR'),'yyyy/mm/dd HH24:MI:SS')
when c.timezone in (8) then to_char(b.universal_datetime,'yyyy/mm/dd HH24:MI:SS')
when c.timezone in (7) then to_char(b.universal_datetime + NUMTODSINTERVAL(1, 'HOUR'),'yyyy/mm/dd HH24:MI:SS')
when c.timezone in (6) then to_char(b.universal_datetime + NUMTODSINTERVAL(2, 'HOUR'),'yyyy/mm/dd HH24:MI:SS')
when c.timezone in (10) then to_char(b.universal_datetime - NUMTODSINTERVAL(3, 'HOUR'),'yyyy/mm/dd HH24:MI:SS')
when c.timezone in (9) then to_char(b.universal_datetime - NUMTODSINTERVAL(1, 'HOUR'),'yyyy/mm/dd HH24:MI:SS')
ELSE 'Other' END AS Local_Time,
令人惊讶的是,这不是ApacheSparkSQL内置时间函数的一部分。
您的数据是什么样子的?另外,您使用的是什么版本的Spark?@ShankarKoirala日期时间字段看起来像2016/10/05 15:18:05,它在PST@ktdrv使用2.1版unix_时间戳的用途是什么?没有内置函数,但不需要编写SQL来实现这一点。感谢@psidom,这很有趣,但@psidom解决方案使用pyspark而不是spark sql。此外,您必须将时间间隔计算到一秒,而不是使用您想要的日/月/分/秒时间间隔。如果有一个更简单的版本将当前dttm转换为UTC和UTC,而不必编写自定义函数,我会感兴趣。
SELECT
current_timestamp() AS current_timestamp,
(current_timestamp() - INTERVAL '6' HOUR) AS current_timestamp_minus_six_hours