mhilton opened a new issue, #7697:
URL: https://github.com/apache/arrow-datafusion/issues/7697

   ### Describe the bug
   
   The optional third parameter to `date_bin`, which is the `origin` time, can 
normally be specified with a time constant in a string. If the input 
`expression` has a type that includes a time zone then datafusion returns the 
following error:
   
   ```
   Error during planning: No function matches the given name and argument types 
'date_bin(Utf8, Timestamp(Nanosecond, Some("+00:00")), Utf8)'. You might need 
to add explicit type casts.
        Candidate functions:
        date_bin(Interval(MonthDayNano), Timestamp(Nanosecond, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Nanosecond, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Nanosecond, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(DayTime), Timestamp(Nanosecond, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Nanosecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Nanosecond, None))
        date_bin(Interval(DayTime), Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Microsecond, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Microsecond, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Microsecond, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(DayTime), Timestamp(Microsecond, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Microsecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Microsecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Microsecond, None))
        date_bin(Interval(DayTime), Timestamp(Microsecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Millisecond, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Millisecond, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Millisecond, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(DayTime), Timestamp(Millisecond, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Millisecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Millisecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Millisecond, None))
        date_bin(Interval(DayTime), Timestamp(Millisecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Second, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(MonthDayNano), Timestamp(Second, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Second, None), 
Timestamp(Nanosecond, None))
        date_bin(Interval(DayTime), Timestamp(Second, Some("+TZ")), 
Timestamp(Nanosecond, Some("+TZ")))
        date_bin(Interval(MonthDayNano), Timestamp(Second, None))
        date_bin(Interval(MonthDayNano), Timestamp(Second, Some("+TZ")))
        date_bin(Interval(DayTime), Timestamp(Second, None))
        date_bin(Interval(DayTime), Timestamp(Second, Some("+TZ")))
   ```
   
   ### To Reproduce
   
   To reproduce run the following script in `datafusion-cli`:
   
   ```
   -- Create a table with some timestamps in it.
   CREATE TABLE test (
     time TIMESTAMP WITH TIME ZONE
   ) AS VALUES
     ('2000-01-01T00:00:00Z'),
     ('2000-01-01T00:00:01Z');
   
   -- Check that the column preserved the time zone.
   SELECT arrow_typeof(time) FROM test;
   
   -- Check that date_bin runs without an origin.
   SELECT date_bin('1 minute', time) FROM test;
   
   -- Check that date_bin runs with an origin.
   SELECT date_bin('1 minute', time, '1970-01-01T00:00:00Z') FROM test;
   ```
   
   
   ### Expected behavior
   
   The `SELECT date_bin('1 minute', time) FROM test;` and `SELECT date_bin('1 
minute', time, '1970-01-01T00:00:00Z') FROM test;` queries should produce 
identical results.
   
   ### Additional context
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to