[ 
https://issues.apache.org/jira/browse/DRILL-4864?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Serge Harnyk updated DRILL-4864:
--------------------------------
    Description: 
The TO_DATE() is exposing the Joda string formatting conventions into the SQL 
layer. This is not following SQL conventions used by ANSI and many other 
database engines on the market.

Add new UDF "ansi_to_joda(string)", that takes string that represents ANSI 
datetime format and returns string that represents equal Joda format.
Add new session option "drill.exec.fn.to_date_format" that can be one of two 
values - "JODA"(default) and "ANSI".
If option is set to "JODA" queries with to_date() function would work in usual 
way.
If option is set to "ANSI" second argument would be wrapped with ansi_to_joda() 
function, that allows user to use ANSI datetime format
Wrapping is used in to_date(), to_time() and to_timestamp() functions.

  was:
The TO_DATE() is exposing the Joda string formatting conventions into the SQL 
layer. This is not following SQL conventions used by ANSI and many other 
database engines on the market.

Add new UDF "ansi_to_joda(string)", that takes string that represents ANSI 
datetime format and returns string that represents equal Joda format.
Add new session option "drill.exec.fn.to_date_format" that can be one of two 
values - "JODA"(default) and "ANSI".
If option is set to "JODA" queries with to_date() function would work in usual 
way.
If option is set to "ANSI" second argument would be wrapped with ansi_to_joda() 
function, that allows user to use ANSI datetime format
Wrapping is used in to_date(), to_time() and to_timestamp() functions.

<table border="0" cellspacing="0" cellpadding="0" class="Table1"><colgroup><col 
width="229"/><col width="250"/><col width="264"/></colgroup><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p 
class="P1">Pattern name</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">Ansi format</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">JodaTime format</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">FULL 
NAME OF DAY</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">day</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">EEEE</p></td></tr><tr><td style="text-align:left;width:2.0625in; " 
class="Table1_A1"><p class="P1">DAY OF YEAR</p></td><td 
style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">ddd</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">D</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">DAY OF 
MONTH</p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">dd</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">d</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">DAY OF 
WEEK</p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">d</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">e</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">NAME 
OF MONTH</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">month</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">MMMM</p></td></tr><tr><td style="text-align:left;width:2.0625in; " 
class="Table1_A1"><p class="P1">ABR NAME OF MONTH</p></td><td 
style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">mon</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">MMM</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">FULL 
ERA NAME</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">ee</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">G</p></td></tr><tr><td style="text-align:left;width:2.0625in; " 
class="Table1_A1"><p class="P1">NAME OF DAY</p></td><td 
style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">dy</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">E</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">TIME 
ZONE</p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">tz</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">TZ</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">HOUR 
12 </p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">hh</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">h</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">HOUR 
12 </p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">hh12</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">h</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">HOUR 
24</p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">hh24</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">H</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">MINUTE 
OF HOUR</p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">mi</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">m</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">SECOND 
OF MINUTE</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">ss</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">s</p></td></tr><tr><td style="text-align:left;width:2.0625in; " 
class="Table1_A1"><p class="P1">MILLISECOND OF MINUTE</p></td><td 
style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">ms</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">S</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p class="P1">WEEK 
OF YEAR</p></td><td style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">ww</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">w</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p 
class="P1">MONTH</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">mm</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">MM</p></td></tr><tr><td style="text-align:left;width:2.0625in; " 
class="Table1_A1"><p class="P1">HALFDAY AM</p></td><td 
style="text-align:left;width:2.25in; " class="Table1_A1"><p 
class="P3">am</p></td><td style="text-align:left;width:2.375in; " 
class="Table1_A1"><p class="P3">aa</p></td></tr><tr><td 
style="text-align:left;width:2.0625in; " class="Table1_A1"><p 
class="P1">HALFDAY PM</p></td><td style="text-align:left;width:2.25in; " 
class="Table1_A1"><p class="P3">pm</p></td><td 
style="text-align:left;width:2.375in; " class="Table1_A1"><p 
class="P3">aa</p></td></tr><tr><td style="text-align:left;width:2.0625in; " 
class="Table1_A21"><p class="P2">ref.</p></td><td 
style="text-align:left;width:2.25in; " class="Table1_A21"><p 
class="P4">https://www.postgresql.org/docs/8.2/static/functions-formatting.html</p></td><td
 style="text-align:left;width:2.375in; " class="Table1_A21"><p 
class="P4">http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html</p></td></tr></table>


> Add ANSI format for date/time functions
> ---------------------------------------
>
>                 Key: DRILL-4864
>                 URL: https://issues.apache.org/jira/browse/DRILL-4864
>             Project: Apache Drill
>          Issue Type: Improvement
>    Affects Versions: 1.8.0
>            Reporter: Serge Harnyk
>            Assignee: Serge Harnyk
>             Fix For: 1.9.0
>
>         Attachments: jodatime_ansi.odt
>
>
> The TO_DATE() is exposing the Joda string formatting conventions into the SQL 
> layer. This is not following SQL conventions used by ANSI and many other 
> database engines on the market.
> Add new UDF "ansi_to_joda(string)", that takes string that represents ANSI 
> datetime format and returns string that represents equal Joda format.
> Add new session option "drill.exec.fn.to_date_format" that can be one of two 
> values - "JODA"(default) and "ANSI".
> If option is set to "JODA" queries with to_date() function would work in 
> usual way.
> If option is set to "ANSI" second argument would be wrapped with 
> ansi_to_joda() function, that allows user to use ANSI datetime format
> Wrapping is used in to_date(), to_time() and to_timestamp() functions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to