根据日期类型的字段过滤Flink表

时间:2019-01-29 18:28:26

标签: apache-flink flink-sql

我创建了一个表,该表具有一个类型为Date的字段,即 f_date 。我想要的查询过滤器表的一部分基于 f_date 字段。所以我做了以下事情:

mytable.filter("f_date <= '1998-10-02'")

mytable.filter("f_date <= '1998/10/02'")

然后在所有两种情况下都出现以下相同错误:

Expression 'f_date <= 1998/10/02 failed on input check: Comparison is only supported for numeric types and comparable types of the same type, got Date and String

我什至删除了单引号并尝试:

mytable.filter("f_date <= 1998/10/02")

我得到了错误:

Expression 'f_date <= ((1998 / 10) / 2) failed on input check: Comparison is only supported for numeric types and comparable types of same type, got Date and Integer

最后,我创建一个Date对象并尝试:

mytable.filter("f_date <=" + Java.sql.Date.valueOf("1998-10-22"))

我得到了错误:

Expression 'f_date <= ((1998 - 10) - 2) failed on input check: Comparison is only supported for numeric types and comparable types of the same type, got Date and Integer

在上述情况下,Flink将日期识别为String或Integer。如何以正确的格式给出日期!?

1 个答案:

答案 0 :(得分:0)

我应该使用toDate方法将 String 转换为 Date

filter("f_date <= '1998-10-02'.toDate")