本文介绍了unix_timestamp 是否截断或舍入毫秒?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

来自参考:

将具有给定模式的时间字符串('yyyy-MM-dd HH:mm:ss',默认情况下)转换为 Unix 时间戳(以秒为单位),使用默认时区和默认语言环境,如果失败则返回 null.

我发现这会减少 DataFrame 时间戳列的毫秒数.我只是想知道它是简单地截断还是将时间戳四舍五入到最接近的秒数.

I find that this drops milliseconds off DataFrame timestamp columns. I am just wondering whether it simply truncates, or rounds the timestamp to the nearest second.

推荐答案

没有文档备份但是在@spark 2.2.0 中,它被截断,这里是一个演示:

No documentation back up but in @spark 2.2.0, it's truncation, here is a demo:

from pyspark.sql import Row
import pyspark.sql.functions as F
r = Row('datetime')
lst = [r('2017-10-29 10:20:30.102'), r('2017-10-29 10:20:30.999')]

df = spark.createDataFrame(lst)

(df.withColumn('trunc_datetime', F.unix_timestamp(F.col('datetime')))
   .withColumn('seconds', F.from_unixtime(F.col('trunc_datetime'), 'ss'))
   .show(2, False))

+-----------------------+--------------+-------+
|datetime               |trunc_datetime|seconds|
+-----------------------+--------------+-------+
|2017-10-29 10:20:30.102|1509286830    |30     |
|2017-10-29 10:20:30.999|1509286830    |30     |
+-----------------------+--------------+-------+

这篇关于unix_timestamp 是否截断或舍入毫秒?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-09 09:48