Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark spark数据帧将字符串列转换为具有给定格式的时间戳_Apache Spark_Dataframe_Timestamp - Fatal编程技术网

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的字符串),并且无法修改

这里没有任何转换可以帮助您,因为任何满足输出格式的转换都必须将数据转换为字符串