在pyspark中,当某些时间戳为空时查找时间戳的差异

在pyspark中,当某些时间戳为空时查找时间戳的差异,pyspark,timestamp,Pyspark,Timestamp,我在pyspark数据帧中有两个时间戳列,如下所示: +--------------------+--------------------+ | TIME_STAMP| TIME_STAMP2| +--------------------+--------------------+ |2020-01-03 12:58:...| null| |2020-01-03 12:59:...| null| |20

我在pyspark数据帧中有两个时间戳列,如下所示:

+--------------------+--------------------+
|          TIME_STAMP|         TIME_STAMP2|
+--------------------+--------------------+
|2020-01-03 12:58:...|                null|
|2020-01-03 12:59:...|                null|
|2020-01-03 13:01:...|                null|
|2020-01-03 13:02:...|                null|
|2020-01-03 13:04:...|                null|
|2020-01-03 13:05:...|                null|
|2020-01-03 13:07:...|                null|
|2020-01-03 13:08:...|2020-01-03 12:58:...|
|2020-01-03 13:10:...|2020-01-03 12:59:...|
|2020-01-03 13:11:...|2020-01-03 13:01:...|
|2020-01-03 13:13:...|2020-01-03 13:02:...|
|2020-01-03 13:14:...|2020-01-03 13:04:...|
|2020-01-03 13:16:...|2020-01-03 13:05:...|
|2020-01-03 13:17:...|2020-01-03 13:07:...|
|2020-01-03 13:19:...|2020-01-03 13:08:...|
|2020-01-03 13:20:...|2020-01-03 13:10:...|
|2020-01-03 13:22:...|2020-01-03 13:11:...|
|2020-01-03 13:23:...|2020-01-03 13:13:...|
|2020-01-03 13:24:...|2020-01-03 13:14:...|
|2020-01-03 13:26:...|2020-01-03 13:16:...|
+--------------------+--------------------+
我想找出差异,但是,如果其中一个值为
null
,我会得到一个错误。 有什么办法可以解决这个问题吗? 这就是我得到的错误:

遇到错误:“无法解析”(
时间戳
- 由于数据类型不匹配,“(
TIME\u STAMP
-
TIME\u STAMP2
)需要(数字或日历间隔)类型,而不是 时间戳


您可以将时间戳值强制转换为long并减去它们。您将以秒为单位获得差值:

    from pyspark.sql import functions as f

    df.withColumn('diff_in_seconds', f.col('TIME_STAMP').cast('long') - f.col('TIME_STAMP2').cast('long'))
    df.show(10, False)

请注意,如果任何值为“null”,则结果也将为“null”。

能否显示给出错误的代码?将结果设置为null很好。感谢您提供此解决方案!