6

I'm Using BigQuery Standart SQL.

I need to convert a timestamp to Day-of-week name.

e.g. convert today's timestamp (2016-11-24 00:00:00) into a string: 'Thursday'

Thanks :)

Mikhail Berlyant
  • 165,386
  • 8
  • 154
  • 230
shayms8
  • 671
  • 6
  • 13
  • 28

3 Answers3

20

Below is for BigQuery Standard SQL

#standardSQL
SELECT 
  CURRENT_DATE() AS day,
  FORMAT_DATE('%a', CURRENT_DATE()) AS weekday_name_abbreviated,
  FORMAT_DATE('%A', CURRENT_DATE()) AS weekday_name_full

or

#standardSQL
SELECT 
  DATE('2016-11-24 00:00:00') AS day,
  FORMAT_DATE('%a', DATE('2016-11-24 00:00:00')) AS weekday_name_abbreviated,
  FORMAT_DATE('%A', DATE('2016-11-24 00:00:00')) AS weekday_name_full  

result is

day         weekday_name_abbreviated    weekday_name_full    
2016-11-24  Thu                         Thursday     
Mikhail Berlyant
  • 165,386
  • 8
  • 154
  • 230
6

In BigQuery you can use:

SELECT

EXTRACT(DAYOFWEEK
  FROM
    {your_timestamp}) AS dayofweek,

FROM TABLE

It returns an integer: 1 = Sunday, 7 = Saturday

Vitali Kaspler
  • 1,340
  • 10
  • 16
Yannick Pezeu
  • 530
  • 1
  • 7
  • 12
  • > DAYOFWEEK: Returns values in the range [1,7] with Sunday as the first day of of the week. https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions#extract – Smedegaard Mar 30 '22 at 09:44
0

You have to use DAYOFWEEK() and then a CASE statement to return day of week. DAYOFWEEK() returns the day of the week as an integer between 1 (Sunday) and 7 (Saturday). Date and time functions

e.g.

SELECT 
  CASE 
    WHEN DAYOFWEEK(CURRENT_DATE()) = 1 THEN 'Sunday'
    WHEN DAYOFWEEK(CURRENT_DATE()) = 2 THEN 'Monday'
    WHEN DAYOFWEEK(CURRENT_DATE()) = 3 THEN 'Tuesday'
    WHEN DAYOFWEEK(CURRENT_DATE()) = 4 THEN 'Wednesday'
    WHEN DAYOFWEEK(CURRENT_DATE()) = 5 THEN 'Thursday'
    WHEN DAYOFWEEK(CURRENT_DATE()) = 6 THEN 'Friday'
    WHEN DAYOFWEEK(CURRENT_DATE()) = 7 THEN 'Saturday'
  END Weekday
Daryl Wenman-Bateson
  • 3,870
  • 1
  • 20
  • 37