Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Date_Part on SQL Athena - "Function date_part not registered"

I'm trying to find latest Sunday (just for the sake of the example)

In the link below I have found an explanation how to use a date function called date_part to extract the day of week (for example, for current timestamp) and other parts of the date which might be interesting.

https://docs.aws.amazon.com/redshift/latest/dg/r_DATE_PART_function.html

The gist of it:

for example to find day of week

select date_part(dow, starttime) as dow from event

But when I try to run something similar on Athena I receive "function date_part not registered".

So how can I find the latest Sunday? Or any other day of the week for that matter.

like image 855
ShiraP Avatar asked Jan 18 '26 09:01

ShiraP


2 Answers

You can combine current_date with day_of_week to get the last Sunday:

presto:default> SELECT date_add('DAY', -day_of_week(current_date), current_date);
   _col0
------------
 2019-12-15
(1 row)

Note: when it's run on Sunday, this returns previous Sunday. You can easily adjust this as needed with if.

Tested on Presto 326.

As Athena is currently based on Presto .172, this is where you can learn about all available functions: https://trino.io/docs/0.172/functions.html

like image 115
Piotr Findeisen Avatar answered Jan 20 '26 01:01

Piotr Findeisen


AWS Athena uses Presto so you need to use the Presto date/time functions. (Redshift, on the other hand, seems to be loosely based on PostgreSQL.)

To get the latest Sunday, you should use day_of_week() to find Sundays, and you can restrict your query to dates in the last week to limit it to the most recent Sunday.

like image 26
Matthew Pope Avatar answered Jan 19 '26 23:01

Matthew Pope