Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
将日期转换为整数scala spark_Scala_Date_Apache Spark - Fatal编程技术网

将日期转换为整数scala spark

将日期转换为整数scala spark,scala,date,apache-spark,Scala,Date,Apache Spark,我有一个数据框,包含两列日期start_date和finish_date;我创建了一个新列,在这两个日期之间添加moyen +-----+--------+-------+---------+-----+--------------------+------------------- start_date| finish_date| moyen_date| +-----+--------+-------+--------

我有一个数据框,包含两列日期
start_date
finish_date
;我创建了一个新列,在这两个日期之间添加moyen

+-----+--------+-------+---------+-----+--------------------+-------------------
start_date|                      finish_date|                  moyen_date|
+-----+--------+-------+---------+-----+--------------------+-------------------
     2010-11-03 15:56:...      |2010-11-03 17:43:...|                 0|
    2010-11-03 17:43:...      |2010-11-05 13:21:...|                  2|
    2010-11-05 13:21:...      |2010-11-05 14:08:...|                  0|
    2010-11-05 14:08:...      |2010-11-05 14:08:...|                  0|
+-----+--------+-------+---------+-----+--------------------+-------------------
我计算了两个日期之间的差异:

var result = sqlDF.withColumn("moyen_date",datediff(col("finish_date"), col("start_date")))
但我想将开始日期和结束日期转换为整数,因为我知道每列都包含
date+time

有人能帮我吗


感谢您将此视为数据框架的一部分:

df.show(false)
+---------------------+
|ts                   |
+---------------------+
|2010-11-03 15:56:34.0|
+---------------------+
unix\u timestamp
返回自历元以来的毫秒数。输入列的类型应为
时间戳
。输出列的类型为
long

df.withColumn("unix_ts" , unix_timestamp($"ts").show(false)
+---------------------+----------+
|ts                   |unix_ts   |
+---------------------+----------+
|2010-11-03 15:56:34.0|1288817794|
+---------------------+----------+
要将其转换回您选择的时间戳格式,您可以使用
from_unixtime
,它还将可选的时间戳格式作为参数。您正在使用
来确定日期,这就是为什么您只获取日期而不获取时间

df.withColumn("unix_ts" , unix_timestamp($"ts") )
  .withColumn("from_utime" , from_unixtime($"unix_ts" , "yyyy-MM-dd HH:mm:ss.S"))
  .show(false)
+---------------------+----------+---------------------+
|ts                   |unix_ts   |from_utime           |
+---------------------+----------+---------------------+
|2010-11-03 15:56:34.0|1288817794|2010-11-03 15:56:34.0|
+---------------------+----------+---------------------+
但是,这里的_utime
列的类型为
string
。要将其转换为
时间戳
,您可以简单地使用:

df.withColumn("from_utime" , $"from_utime".cast("timestamp") )

因为它已经是ISO日期格式,所以不需要特定的转换。对于任何其他格式,您将需要使用
unix\u timestamp
from\u unixtime

什么类型的
整数
unix\u timestamp($“start\u date”)
将返回一个
bigint
.date到Int。但现在我改变了看法,因为我认为转换==>后该值会很大,所以我想将其更改为长Int谢谢Philantrover已经在上面的评论中回答了您的问题是的,非常感谢你的回答我回答了你,我去测试了一下,效果很好。@philantrovert为什么不在下面回答:)这样vero就可以把这个问题标记为已回答。