簡體   English   中英

在 Spark dataframe 中創建沒有毫秒部分的時間戳列

[英]Create a timestamp column in Spark dataframe without milliseconds part

我正在嘗試在 Pyspark 的數據框中創建一個名為load_time_stamp的新列,該列應該只包含今天的日期和時間,直到秒,並且不應該包含毫秒。

我已經為此編寫了下面的代碼,但是使用 null 值而不是我預期的時間戳值創建了一個新列。

from pyspark.sql import functions as F

x.withColumn("load_time_stamp", F.to_timestamp(F.substring(F.current_timestamp(), 0, 19), "yyyy-MM-dd'T'HH:mm:ss")).show()

您可以改用date_format

import pyspark.sql.functions as F

x.withColumn("load_time_stamp", F.date_format(F.current_timestamp(), "yyyy-MM-dd'T'HH:mm:ss"))

請注意, to_timestamp將時間戳給定格式轉換,而date_format將時間戳轉換為定格式。 您不需要substring當前時間戳,因為date_format在格式化為所需格式時會處理該問題。

如果你想得到一個只有秒精度的時間戳類型列,那么你可以使用from_unixtime function。

例子:

from pyspark.sql import functions as F

x = spark.createDataFrame([(1,)], ["id"])

x.withColumn(
    "load_time_stamp",
    F.from_unixtime(F.current_timestamp().cast("long"))
).show(truncate=False)

#+---+-------------------+
#|id |load_time_stamp    |
#+---+-------------------+
#|1  |2021-02-22 15:35:34|
#+---+-------------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM