[ 
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)

Reply via email to