select extract(dow from datefield) 

extract a number from 0 to 6, where 0 is Sunday; is there a way to get the day of the week in SQL assuming that weeks start on Monday (so 0 will be Monday)?

1

4 Answers

From the manual

isodow The day of the week as Monday (1) to Sunday (7) 

So, you just need to subtract 1 from that result:

psql (9.6.1) Type "help" for help. postgres=> select extract(isodow from date '2016-12-12') - 1; ?column? ----------- 0 (1 row) postgres=> 
2

Use date_part Function dow()

Here 0=Sunday, 1=Monday, 2=Tuesday, ... 6=Saturday

 select extract(dow from date '2016-12-18'); /* sunday */ 

Output : 0

 select extract(isodow from date '2016-12-12'); /* Monday */ 

Ouput : 1

If you want the text version of the weekday then you can use the to_char(date, format) function supplying a date and the format that you want.

According to we have the following format options we can use for date. I have shown some examples for output. According to the documentation the abbreviated day values are 3 characters long in English, other locales may vary.

select To_Char("Date", 'DAY'), * from "MyTable"; -- TUESDAY select To_Char("Date", 'Day'), * from "MyTable"; -- Tuesday select To_Char("Date", 'day'), * from "MyTable"; -- tuesday select To_Char("Date", 'dy'), * from "MyTable"; -- tue select To_Char("Date", 'Dy'), * from "MyTable"; -- Tue select To_Char("Date", 'DY'), * from "MyTable"; -- TUE select To_Char("Date", 'D'), * from "MyTable"; -- 3 From Docs: day of the week, Sunday (1) to Saturday (7) 
with a as (select extract(isodow from date '2020-02-28') - 1 a ), b as(select CASE WHEN a.a=0 THEN 'Sunday' WHEN a.a =1 THEN 'Monday' WHEN a.a =2 THEN 'Tuesday' WHEN a.a=3 THEN 'Wednesday' WHEN a.a=4 THEN 'Thursday' WHEN a.a=5 THEN 'Friday' WHEN a.a=6 THEN 'Saturday' ELSE 'other' END from a ) select * from b; 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.