You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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
The time zone support for date_bin doesn't seem to be in a released version yet. I was testing this with a datafusion-cli built from commit 4b2b7dcfc63abfc03b0279abe122c5bdfcca5275.
The text was updated successfully, but these errors were encountered:
If the user specifies arguments to that function as, eg, a String that doesn't match the required types, the datafusion coercion logic kicks in and adds casts on the specific arguments to make them conform to one of the available signatures.
The current convention is that Timestamp(Second, Some("+TZ"))) effectively means "any Timestamp type with a timezone, and then the implementation of the function (in this case date_bin) must handle any possible timezone that comes in.
Thus I think the solution @mhilton and I brainstormed is to change the signature to Timestamp(Second, Some("+00:00))) (aka only accept UTC timestamps) and teach the coercion logic to cast all argument to that time. Then the implementation of date_bin only needs to handle one timezone (UTC)
Describe the bug
The optional third parameter to
date_bin
, which is theorigin
time, can normally be specified with a time constant in a string. If the inputexpression
has a type that includes a time zone then datafusion returns the following error:To Reproduce
To reproduce run the following script in
datafusion-cli
:Expected behavior
The
SELECT date_bin('1 minute', time) FROM test;
andSELECT date_bin('1 minute', time, '1970-01-01T00:00:00Z') FROM test;
queries should produce identical results.Additional context
The time zone support for
date_bin
doesn't seem to be in a released version yet. I was testing this with adatafusion-cli
built from commit4b2b7dcfc63abfc03b0279abe122c5bdfcca5275
.The text was updated successfully, but these errors were encountered: