在数据帧中将unixtimestamp转换为datetime格式时发生scala代码错误

在数据帧中将unixtimestamp转换为datetime格式时发生scala代码错误,scala,apache-spark,dataframe,Scala,Apache Spark,Dataframe,我面临有关将unixtime戳记转换为datetime格式的问题。我有一个数据帧,它有unixtimestap列,我想把它转换成datetime列。我也尝试过使用sql unixtimestamp is 1531294892700 spark.sql("select from_unixtime(timestamp,'YYYY-MM-dd hh:mm:ss') FROM table1 WHERE id=50 在dataframe上,我也没有得到结果,只是得到了日期 d

我面临有关将unixtime戳记转换为datetime格式的问题。我有一个数据帧,它有unixtimestap列,我想把它转换成datetime列。我也尝试过使用sql

  unixtimestamp is 1531294892700

  spark.sql("select from_unixtime(timestamp,'YYYY-MM-dd hh:mm:ss') 
  FROM 
  table1 WHERE id=50
在dataframe上,我也没有得到结果,只是得到了日期

   df4.select(to_date(from_unixtime($"timestamp" / 1000)))
它给出这样的输出

 50494-10-20 05:55:00    

 output i want is Wednesday, July 11, 2018 7:41:32.700 AM
 or 
 07/11/2018 07:41:32 

您的数据似乎是从纪元开始以毫秒的形式存储的。你必须分开

val df = Seq(1531294892700L).toDF("timestamp")
val seconds = df.withColumn("timestamp", $"timestamp" / 1000)
转换为时间戳

val timestamp = seconds.withColumn("timestamp", from_unixtime($"timestamp"))
和演员:

timestamp.select($"timestamp".cast("date")).show
// +----------+
// | timestamp|
// +----------+
// |2018-07-11|
// +----------+
例如,如果要格式化,请使用日期\格式

timestamp.select(date_format($"timestamp",  "MM/dd/yyyy hh:mm:ss")).show
// +-------------------------------------------+
// |date_format(timestamp, MM/dd/yyyy hh:mm:ss)|
// +-------------------------------------------+
// |                        07/11/2018 07:41:32|
// +-------------------------------------------+
Seq1531294892700L.toDFtimestamp错误,Seq不是rdd