Scala 日期\格式不处理带有'00:00:00'的时间戳`

Scala 日期\格式不处理带有'00:00:00'的时间戳`,scala,apache-spark,datetime,unix-timestamp,Scala,Apache Spark,Datetime,Unix Timestamp,它将时间戳类型的2020-01-27 00:00:00格式设置为2020-01-27 12:00:00,而不是2020-01-27 00:00:00 您的图案应为yyyy-MM-dd HH:MM:ss 根据,日期\格式使用java.text.simpleDataFormat支持的说明符: 将日期/时间戳/字符串转换为第二个参数给定的日期格式指定的字符串值。 有关有效的日期和时间格式模式,请参见SimpleDataFormat 可以找到SimpleDataFormat的文档 hh在上午/下午1-1

它将时间戳类型的2020-01-27 00:00:00格式设置为2020-01-27 12:00:00,而不是2020-01-27 00:00:00

您的图案应为yyyy-MM-dd HH:MM:ss

根据,日期\格式使用java.text.simpleDataFormat支持的说明符:

将日期/时间戳/字符串转换为第二个参数给定的日期格式指定的字符串值。 有关有效的日期和时间格式模式,请参见SimpleDataFormat

可以找到SimpleDataFormat的文档

hh在上午/下午1-12时用于小时。您正在查找一天中的小时说明符,它是HH。

您的模式应该是yyyy-MM-dd HH:MM:ss

根据,日期\格式使用java.text.simpleDataFormat支持的说明符:

将日期/时间戳/字符串转换为第二个参数给定的日期格式指定的字符串值。 有关有效的日期和时间格式模式,请参见SimpleDataFormat

可以找到SimpleDataFormat的文档


hh在上午/下午1-12时用于小时。您正在查找一天中的小时说明符,即HH。

您可能希望使用yyyy-MM-dd HH:MM:ss作为模式。hh表示12h格式,hh表示24h@ernest_k你能回答一下你的意见吗?这对我有用,谢谢!您可能希望使用yyyy-MM-dd HH:MM:ss作为您的模式。hh表示12h格式,hh表示24h@ernest_k你能回答一下你的意见吗?这对我有用,谢谢!
  import spark.sqlContext.implicits._
  import java.sql.Timestamp
import org.apache.spark.sql.functions.typedLit


scala>   val stamp = typedLit(new Timestamp(1580105949000L))
stamp: org.apache.spark.sql.Column = TIMESTAMP('2020-01-27 00:19:09.0')


scala>   var df_test = Seq(5).toDF("seq").select(
     |     stamp.as("unixtime"),
     |     date_trunc("HOUR", stamp).as("date_trunc"),
     |     date_format(date_trunc("HOUR", stamp), "yyyy-MM-dd hh:mm:ss").as("hour")
     |   )
df_test: org.apache.spark.sql.DataFrame = [unixtime: timestamp, date_trunc: timestamp ... 1 more field]


scala> df_test.show
+-------------------+-------------------+-------------------+
|           unixtime|         date_trunc|               hour|
+-------------------+-------------------+-------------------+
|2020-01-27 00:19:09|2020-01-27 00:00:00|2020-01-27 12:00:00|
+-------------------+-------------------+-------------------+