scala - 如何在Scala中将时间戳调整为毫秒?
问题描述
我有一个包含列列表的数据框;其中一列是具有不同长度的 key_time。我需要在第二部分将所有 key_time 长度保持为毫秒,例如:
原始 key_time 列:
+--------------------+----------------------+
|account_id |key_time. |
+--------------------+----------------------+
|9999999. |2018-07-01 12:32:0424 |
+--------------------+----------------------+
这就是我要的:
+--------------------+------------------------+
|account_id |key_time. |
+--------------------+------------------------+
|9999999. |2018-07-01 12:32:042400 |
+--------------------+----------------------==+
如果第二部分通过 6 位数,那么我需要将其减少到 6:
+--------------------+------------------------+
|account_id |key_time. |
+--------------------+------------------------+
|9999999. |2018-07-01 12:32:123456 |
+--------------------+----------------------==+
我可以df = df.withColumn("key_time", logic (here))
吗?我是 Scala 新手,不知道从哪里开始。
有什么建议么?
解决方案
一种方法是首先通过将其转换key_time
为有效的时间戳格式,regexp_extract
然后将date_format
其整形为所需的格式:
val df = Seq(
(101, "2018-07-01 12:32:0424"),
(102, "2018-07-01 12:32:123456")
).toDF("account_id ", "key_time")
val pattern = "(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})(.*)"
df.
withColumn("key_time_1", regexp_extract($"key_time", pattern, 1)).
withColumn("key_time_2", regexp_extract($"key_time", pattern, 2)).
withColumn("key_timestamp", concat($"key_time_1", lit("."), $"key_time_2")).
withColumn("key_time", date_format($"key_timestamp", "yyyy-MM-dd HH:mm:ssSSS")).
select("account_id ", "key_timestamp", "key_time").
show(false)
// +-----------+------------------------+----------------------+
// |account_id |key_timestamp |key_time |
// +-----------+------------------------+----------------------+
// |101 |2018-07-01 12:32:04.24 |2018-07-01 12:32:04240|
// |102 |2018-07-01 12:32:12.3456|2018-07-01 12:32:12345|
// +-----------+------------------------+----------------------+
推荐阅读
- php - 如何创建与列进行比较的自定义验证规则?
- laravel - 在 laravel 中通过单个命令行回滚和迁移
- java - 向 Spring Boot 后端发布请求返回状态代码 500 Angular 请求
- c# - .NET MVC 类对象用于 linq
- php - 如何修复 Laravel 中未定义的变量错误?
- flutter - 为什么 Dart 不能定义依赖于另一个实例属性的实例属性
- weblogic12c - Weblogic Server 在会话 ID 生成期间包含 NONE 值
- python - 如何使用 pip 安装 gspread?
- xslt - Xpath3 表达式或 XSLT 代码以获取具有特定属性的所有节点名称,以便它们出现
- python - Pygame 如何制作斜坡?