Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Zeppelin Spark Sql中向Datetime添加小时数_Datetime_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

如何在Zeppelin Spark Sql中向Datetime添加小时数

如何在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

我有一个查询,其中有一列将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.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