[ https://issues.apache.org/jira/browse/FLINK-26945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17703680#comment-17703680 ]
Timo Walther edited comment on FLINK-26945 at 3/22/23 2:03 PM: --------------------------------------------------------------- I see the problem is that this is rather an internal conversion that has nothing to do with SQL semantics. Semantically you cannot cast a DATE to INT. In this case I would go with the ExpressionEvaluatorFactory approach. You don't need to go through LocalDateTime. The DataType that can be passed into ExpressionEvaluatorFactory.createEvaluator supports the conversion classes of DataType. Thus, you can directly request `DataTypes.DATE().notNull().bridgedTo(int.class)`. int is also the internal format of DATE types. So the generated code for the expression evaluator should be very efficient. was (Author: twalthr): I see the problem is that this is rather an internal conversion that has nothing to do with SQL semantics. Semantically you cannot cast a DATE to INT. In this case I would go with the ExpressionEvaluatorFactory approach. You don't need to go through LocalDateTime. The DataType that can be passed into ExpressionEvaluatorFactory.createEvaluator supports the conversion classes of DataType. Thus, you can directly request `DataTypes.DATE().notNull().bridgedTo(int.class)`. > Add DATE_SUB supported in SQL & Table API > ----------------------------------------- > > Key: FLINK-26945 > URL: https://issues.apache.org/jira/browse/FLINK-26945 > Project: Flink > Issue Type: Sub-task > Components: Table SQL / API > Reporter: dalongliu > Priority: Major > Labels: pull-request-available > Fix For: 1.17.0 > > > Returns the date {{numDays}} before {{{}startDate{}}}. > Syntax: > {code:java} > date_sub(startDate, numDays) {code} > Arguments: > * {{{}startDate{}}}: A DATE expression. > * {{{}numDays{}}}: An INTEGER expression. > Returns: > A DATE. > If {{numDays}} is negative abs(num_days) are added to {{{}startDate{}}}. > If the result date overflows the date range the function raises an error. > Examples: > {code:java} > > SELECT date_sub('2016-07-30', 1); > 2016-07-29 {code} > See more: > * > [Spark|https://spark.apache.org/docs/latest/sql-ref-functions-builtin.html#date-and-timestamp-functions] > * [Hive|https://cwiki.apache.org/confluence/display/hive/languagemanual+udf] -- This message was sent by Atlassian Jira (v8.20.10#820010)