我有一列带有字符串值,例如“ 2020年6月24日”,我想将其转换为日期类型。
当从字符串类型转换为日期类型时,是否可以指定输入和输出日期格式的格式。
答案 0 :(得分:2)
火花日期格式为 yyyy-MM-dd
,您可以使用 to_date,to_timestamp,from_unixtime + unix_timestamp
函数将字符串更改为日期。
Example:
df.show()
#+-----------+
#| dt|
#+-----------+
#|24 Jun 2020|
#+-----------+
#using to_date function
df.withColumn("new_format", to_date(col("dt"),'dd MMM yyyy')).show()
#using to_timestamp function
df.withColumn("new_format", to_timestamp(col("dt"),'dd MMM yyyy').cast("date")).show()
#+-----------+----------+
#| dt|new_format|
#+-----------+----------+
#|24 Jun 2020|2020-06-24|
#+-----------+----------+
df.withColumn("new_format", to_date(col("dt"),'dd MMM yyyy')).printSchema()
#root
# |-- dt: string (nullable = true)
# |-- new_format: date (nullable = true)
答案 1 :(得分:0)
日期的默认日期格式为yyyy-MM-dd
-
val df1 = Seq("24 Jun 2020").toDF("dateStringType")
df1.show(false)
/**
* +--------------+
* |dateStringType|
* +--------------+
* |24 Jun 2020 |
* +--------------+
*/
// default date format is "yyyy-MM-dd"
df1.withColumn("dateDateType", to_date($"dateStringType", "dd MMM yyyy"))
.show(false)
/**
* +--------------+------------+
* |dateStringType|dateDateType|
* +--------------+------------+
* |24 Jun 2020 |2020-06-24 |
* +--------------+------------+
*/
// Use date_format to change the default date_format to "dd-MM-yyyy"
df1.withColumn("changDefaultFormat", date_format(to_date($"dateStringType", "dd MMM yyyy"), "dd-MM-yyyy"))
.show(false)
/**
* +--------------+------------------+
* |dateStringType|changDefaultFormat|
* +--------------+------------------+
* |24 Jun 2020 |24-06-2020 |
* +--------------+------------------+
*/