我执行时
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_timestamp
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")
给出正确答案,但数据类型变为字符串,而我的要求是将数据类型转换为时间戳,而不会丢失数据。
有人建议吗?
谢谢。
答案 0 :(得分:1)
时间戳数据类型中没有缺少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表示时间戳时,只需使用日期/时间格式化程序功能
答案 1 :(得分:0)
打印表示的格式是固定的(本地时区符合ISO 8601的字符串),并且不能修改。
这里没有任何可以帮助您的转换,因为任何满足输出格式的转换都必须将数据转换为字符串。