Фильтрация Flink Table по полю типа Date
Я создал таблицу, которая имеет одно поле типа 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 ответ
Решение
Я должен преобразовать строку в дату, используя toDate
метод.
filter("f_date <= '1998-10-02'.toDate")