![](/img/trans.png)
[英]How to format a date time string of format “3/22/2018 12:24:29 PM” into sql timestamp to insert into h2 in memory database?
[英]Spark SQL function for datetime is working for time format in AM not in PM
我将 AM/PM 中的 DateTime 转换为 24 小时。 AM 的转换工作正常,但 PM 的转换失败并返回null 。 请在示例下方找到
val seq = Seq((1,"abc","123","15/3/2021 02:00:00 AM"),(2,"pqr","456","15/3/2021 04:00:00 PM"),(1,"xyz","789","15/3/2021 09:00:00 AM"))
val df = seq.toDF("id","name","addr","time")
val time = df.withColumn("time2",from_unixtime(unix_timestamp($"time","dd/MM/yyyy HH:mm:ss a"),"d MMMMM yyyy HH:mm:ss"))
+---+----+----+---------------------+----------------------+
|id |name|addr|time |time2 |
+---+----+----+---------------------+----------------------+
|1 |abc |123 |15/3/2021 02:00:00 AM|15 March 2021 02:00:00|
|2 |pqr |456 |15/3/2021 04:00:00 PM|null |
|1 |xyz |789 |15/3/2021 09:00:00 AM|15 March 2021 09:00:00|
+---+----+----+---------------------+----------------------+
有人可以在这里建议吗?
使用小写h
表示clock-hour-of-am-pm (1-12)
(请参阅文档)。 另外,使用 1 M
因为给定的格式只有 1 个月份的数字; 对于结果中的长月份形式,请使用 4 M
而不是 5。
val time = df.withColumn(
"time2",
from_unixtime(unix_timestamp($"time","dd/M/yyyy hh:mm:ss a"),"d MMMM yyyy HH:mm:ss")
)
time.show(false)
+---+----+----+---------------------+----------------------+
|id |name|addr|time |time2 |
+---+----+----+---------------------+----------------------+
|1 |abc |123 |15/3/2021 02:00:00 AM|15 March 2021 02:00:00|
|2 |pqr |456 |15/3/2021 04:00:00 PM|15 March 2021 16:00:00|
|1 |xyz |789 |15/3/2021 09:00:00 AM|15 March 2021 09:00:00|
+---+----+----+---------------------+----------------------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.