scala - Spark数据框仅按日期部分过滤时间戳
问题描述
如何过滤具有时间戳类型列但仅按日期部分过滤的火花数据框。我在下面尝试过,但它仅在时间为 00:00:00 时匹配。
基本上我希望过滤器与日期匹配所有行2020-01-01
(3行)
import java.sql.Timestamp
val df = Seq(
(1, Timestamp.valueOf("2020-01-01 23:00:01")),
(2, Timestamp.valueOf("2020-01-01 00:00:00")),
(3, Timestamp.valueOf("2020-01-01 12:54:00")),
(4, Timestamp.valueOf("2019-12-15 09:54:00")),
(5, Timestamp.valueOf("2019-12-09 10:12:43"))
).toDF("someCol","someTimeStamp")
df.filter(df("someTimeStamp") === "2020-01-01").show
+-------+-------------------+
|someCol| someTimeStamp|
+-------+-------------------+
| 2|2020-01-01 00:00:00| // ONLY MATCHED with time 00:00
+-------+-------------------+
解决方案
使用to_date
函数从时间戳中提取日期:
scala> df.filter(to_date(df("someTimeStamp")) === "2020-01-01").show
+-------+-------------------+
|someCol| someTimeStamp|
+-------+-------------------+
| 1|2020-01-01 23:00:01|
| 2|2020-01-01 00:00:00|
| 3|2020-01-01 12:54:00|
+-------+-------------------+
推荐阅读
- apache-spark - 编码问题读取形状文件
- python - 如何部署具有共享本地依赖项的 Google Cloud Function?
- c# - .NET 是否将结构填充初始化为零?
- c# - 如何在 VS 中仅调试外部程序的一些 DLL?
- c# - 如何将 Setter 传递给构造函数
- android - Firebase 应用内消息 - 如何使用新行
- javascript - 无法在我的 Angular 12 应用程序的开发人员工具的源中查看我的 .ts 文件
- twitter-bootstrap - Bootstrap 4 - 在页脚文本之后仅显示当前断点(内联)
- amazon-web-services - Terraform aws_security_group:如何从变量传递入口和出口块?
- c# - 从 httpcontext dotnet 6 获取控制器名称