Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Question: to_char(date, timstamp format) #14536

Open
xudong963 opened this issue Feb 7, 2025 · 8 comments
Open

Question: to_char(date, timstamp format) #14536

xudong963 opened this issue Feb 7, 2025 · 8 comments

Comments

@xudong963
Copy link
Member

It seems that we don't support

> select to_char('2023-09-04'::date, '%Y-%m-%dT%H:%M:%S%.3f');
Execution error: Cast error: Format error

I want to ensure if this is an unsupported feature or if the SQL semantics don't support this usage.

Thanks!

@xudong963
Copy link
Member Author

FYI, Postgres supports this, so I think it's a feature.

Schema (PostgreSQL v17)


SELECT TO_CHAR('2023-09-04'::date, 'YYYY-MM-DD"T"HH24:MI:SS.MS');
to_char
2023-09-04T00:00:00.000

View on DB Fiddle

@Omega359
Copy link
Contributor

Omega359 commented Feb 7, 2025

If you cast the date to a timestamp that would work, but the syntax you provided would not match a date and thus it'll throw the format error. Any of the following would work:

select to_char('2023-09-04'::date, '%Y-%m-%d');
select to_char('2023-09-04 00:00:00'::timestamp, '%Y-%m-%dT%H:%M:%S%.3f');
select to_char(arrow_cast('2023-09-04'::date, 'Timestamp(Second, None)'), '%Y-%m-%dT%H:%M:%S%.3f');

@alamb
Copy link
Contributor

alamb commented Feb 7, 2025

@xudong963 maybe we should make the error message better?

@xudong963
Copy link
Member Author

xudong963 commented Feb 10, 2025

@xudong963 maybe we should make the error message better?

Yes, this is a good point (if we don't plan to support the syntax)

@matthewmturner
Copy link
Contributor

I had the impression (although perhaps it is dated) that datafusion sought to be compatible with postgres to the extent reasonable. Assuming thats still the case is there a reason we wouldnt want to fix this?

@Omega359
Copy link
Contributor

Omega359 commented Feb 10, 2025

I had the impression (although perhaps it is dated) that datafusion sought to be compatible with postgres to the extent reasonable. Assuming thats still the case is there a reason we wouldnt want to fix this?

I'm sorry, I didn't mean to imply in any way that this is something that should not be looked into. I was just providing alternatives to get @xudong963 past this issue in the meantime.

The solution is likely to try casting the date to a timestamp then applying the format if any of the provided formats don't succeed at first.

@alamb
Copy link
Contributor

alamb commented Feb 11, 2025

I agree -- fixing this issue seems reasonable to me. Thanks @Omega359

@matthewmturner
Copy link
Contributor

@Omega359 totally understood and appreciate the alternatives :)

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants