Scala 如何解析日期时间?

Scala 如何解析日期时间?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我正在尝试分析当前类型为string的日期列。它的格式是 2005-04-24T09:12:49Z 我有Spark 2.1版。我试过以下方法 spark.sql("SELECT TO_DATE(Date) FROM df").show() 这是回报 2005-04-24 但是没有时间戳 接下来我试着 val ts = unix_timestamp($"Date", "yyyy-dd-MM HH:mm:ss").cast("timestamp") df.withColumn("Date", ts

我正在尝试分析当前类型为string的日期列。它的格式是

2005-04-24T09:12:49Z

我有Spark 2.1版。我试过以下方法

spark.sql("SELECT TO_DATE(Date) FROM df").show()
这是回报 2005-04-24 但是没有时间戳

接下来我试着

val ts = unix_timestamp($"Date", "yyyy-dd-MM HH:mm:ss").cast("timestamp")
df.withColumn("Date", ts).show()
这将返回所有空值

然后我试着

spark.sql("select TO_DATE(Date_Resulted, 'yyyy-MM-ddTHH:mm:ssZ') AS date from lab").show()
但这只是返回了错误:

org.apache.spark.sql.AnalysisException: Invalid number of arguments for function to_date; line 1 pos 7

必须有一种简单的方法来解析这个字符串date列以返回类型DateTime。任何帮助都将不胜感激

在Spark中获得datetime的方法有很多种

让我们使用以下示例数据:

val df=Seq("2005-04-24T09:12:49Z").toDF("time_stamp")
df.createOrReplaceTempView("tmp")
时间戳日期 从时间戳获取日期时间-使用from_unixtime和unix_时间戳函数 从时间戳获取日期时间-使用unix\u时间戳函数 从时间戳获取日期时间-使用to_timestamp函数 从时间戳获取日期时间-使用指定格式的to_timestamp函数 这将有助于:

val df = Seq("2005-04-24T09:12:49Z").toDF("date")

df
  .withColumn("date_converted", to_timestamp($"date", "yyyy-MM-dd'T'HH:mm:ss'Z'"))
  .show()
给出:

+--------------------+-------------------+
|                date|     date_converted|
+--------------------+-------------------+
|2005-04-24T09:12:49Z|2005-04-24 09:12:49|
+--------------------+-------------------+
//in spark sql api    
spark.sql("""select timestamp(unix_timestamp(time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'")) as ts from tmp""").show()

//in dataframe api
df.withColumn("dt",unix_timestamp('time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'").cast("timestamp")).select("dt").show()

// Result:
// +-------------------+
// |                 ts|
// +-------------------+
// |2005-04-24 09:12:49|
// +-------------------+
//in spark sql api
spark.sql("select to_timestamp(time_stamp)ts from tmp").show()

//in dataframe api
df.withColumn("dt",to_timestamp('time_stamp)).select("dt").show()

// Result:
// +-------------------+
// |                 ts|
// +-------------------+
// |2005-04-24 04:12:49|
// +-------------------+
//in spark sql api
spark.sql("""select to_timestamp(time_stamp,"yyyy-MM-dd'T'hh:mm:ss'Z'")ts from tmp""").show()

//in dataframe api
df.withColumn("dt",to_timestamp($"time_stamp","yyyy-MM-dd'T'hh:mm:ss'Z'")).select("dt").show()

// Result:
// +-------------------+
// |                 ts|
// +-------------------+
// |2005-04-24 09:12:49|
// +-------------------+
val df = Seq("2005-04-24T09:12:49Z").toDF("date")

df
  .withColumn("date_converted", to_timestamp($"date", "yyyy-MM-dd'T'HH:mm:ss'Z'"))
  .show()
+--------------------+-------------------+
|                date|     date_converted|
+--------------------+-------------------+
|2005-04-24T09:12:49Z|2005-04-24 09:12:49|
+--------------------+-------------------+