[
https://issues.apache.org/jira/browse/CALCITE-6624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17889894#comment-17889894
]
Julian Hyde commented on CALCITE-6624:
--------------------------------------
There's no obvious place to draw the line, except for a few things that create
ambiguity and therefore make the parser run significantly slower and possibly
do the wrong thing in some corner cases. Those obviously have to be in Babel.
I would justify including {{DATETIME}} literals in the Core parser as similar
to supporting different lexical conventions (quoted identifiers in
double-quotes, brackets or backticks; character literals in single- or
double-quotes). Unless {{DATETIME}} is a keyword, "{{{}DATETIME
'1969-07-20'{}}}" cannot be parsed as a literal.
As for the {{DATETIME}} type (e.g. "{{{}CAST(x AS DATETIME){}}}), could it be
parsed as a custom type name?
> SqlParser should parse MySQL DATETIME type
> ------------------------------------------
>
> Key: CALCITE-6624
> URL: https://issues.apache.org/jira/browse/CALCITE-6624
> Project: Calcite
> Issue Type: Bug
> Components: babel, core
> Affects Versions: 1.37.0
> Reporter: Dmitry Sysolyatin
> Assignee: Dmitry Sysolyatin
> Priority: Major
> Labels: pull-request-available
>
> MySQL has two different data types: TIMESTAMP and DATETIME. The difference
> between them is the range they support.
> From the documentation [1]
> ??The TIMESTAMP data type is used for values that contain both date and time
> parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19
> 03:14:07' UTC.??
> ??The DATETIME type is used for values that contain both date and time parts.
> MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD hh:mm:ss' format.
> The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.??
> Calcite's TIMESTAMP likely supports both ranges, and for unparse logic, the
> MySQL dialect class always uses DATETIME because the TIMESTAMP range is a
> subset of the DATETIME range.
> The only missing part is parsing the DATETIME datatype. For example
> {code:java}
> SELECT CAST(timestamp_field AS DATETIME) FROM <table>
> {code}
> [1] [https://dev.mysql.com/doc/refman/8.4/en/datetime.html]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)