Apache spark spark数据帧将字符串列转换为具有给定格式的时间戳
当我执行Apache spark spark数据帧将字符串列转换为具有给定格式的时间戳,apache-spark,dataframe,timestamp,Apache Spark,Dataframe,Timestamp,当我执行 sparkSession.sql("SELECT to_timestamp('2018-08-04.11:18:29 AM', 'yyyy-MM-dd.hh:mm:ss a') as timestamp") 答案中缺少am/pm +-------------------+ | timestamp| +-------------------+ |2018-08-04 11:18:29| +-------------------+ 但是如果AM/PM不存在,那么它会给
sparkSession.sql("SELECT to_timestamp('2018-08-04.11:18:29 AM', 'yyyy-MM-dd.hh:mm:ss a') as timestamp")
答案中缺少am/pm
+-------------------+
| timestamp|
+-------------------+
|2018-08-04 11:18:29|
+-------------------+
但是如果AM/PM不存在,那么它会给出正确的答案
使用unix\u时间戳
sparkSession.sql("select from_unixtime(unix_timestamp('08-04-2018.11:18:29 AM','dd-MM-yyyy.HH:mm:ss a'), 'dd-MM-yyyy.HH:mm:ss a') as timestamp")
给出了正确的答案,但数据类型变为字符串,而我的要求是将数据类型转换为时间戳而不丢失数据
有人有什么建议吗
提前感谢。时间戳数据类型中没有AM/PM。它只是以24小时格式显示时间。你不会丢失任何信息 比如说,
scala> spark.sql("SELECT to_timestamp('2018-08-04.11:18:29 PM', 'yyyy-MM-dd.hh:mm:ss a') as timestamp").show(false)
+-------------------+
|timestamp |
+-------------------+
|2018-08-04 23:18:29|
+-------------------+
无论何时,只要使用AM/PM表示时间戳,只需使用日期/时间格式化程序功能即可打印表示的格式是固定的(本地时区中符合ISO 8601的字符串),并且无法修改 这里没有任何转换可以帮助您,因为任何满足输出格式的转换都必须将数据转换为字符串