我有一个表,该表的列为'date',日期格式为yyyyMMdd。我需要过滤此数据框并返回仅包含日期大于输入的行的数据框,例如:返回日期大于“ 20180715”的所有行。我做了以下事情。
scala> df.groupBy("date").count.show(50,false)
+--------+----------+
|date |count |
+--------+----------+
|20180707|200 |
|20180715|1429586969|
|20180628|1425490080|
|20180716|1429819708|
+--------+----------+
scala> var con = df.filter(to_date(df("date"),"yyyyMMdd").gt(lit("20180715")))
scala> con.count
res4: Long = 0
scala> var con = df.filter(to_date(df("date"),"yyyyMMdd").gt(lit("20170715")))
scala> con.count
res1: Long = 4284896957
当我将日期输入为“ 20170715”时,它将对所有记录进行计数,而如果日期为“ 20180715”,则过滤条件不起作用。与字符串日期进行比较的正确方法是什么?
答案 0 :(得分:1)
更改传递给lit函数的输入字符串的格式即可解决此问题。
scala> var con = df.filter(to_date(df("date"),"yyyyMMdd").gt(lit("2018-07-15")))
scala> con.count
res6: Long = 1429819708