Экстренная дата с Недели ISO (201905) BigQuery - PullRequest
0 голосов
/ 18 мая 2019

Мне нужно извлечь дату воскресенья из номера недели ISO: то есть 201905 Он должен быть в #standardSQL, так как он будет запланирован со сценариями, которые не поддерживают устаревшие.

Я пытался настроить рабочую формулу из Google Sheets, но не могу понять. Оригинальная формула из Google Sheets:

TO_TEXT (
(DATE(LEFT(Week_ISO,4),1,1)
- (WEEKDAY(DATE(LEFT(Week_ISO,4),1,1))-2)
+ (RIGHT(Week_ISO,2)-1)*7) 
+6)

1 Ответ

2 голосов
/ 18 мая 2019

Из моего прочтения документации это должно работать:

PARSE_DATE('%G%V', isoyyyymm)

Но это не так.

Итак, вот альтернатива:

SELECT DATE_ADD(DATE_TRUNC(PARSE_DATE('%Y%m%d', CONCAT(substr(isoyyyyww, 1, 4), '0601')),
                           isoyear
                          ),
                INTERVAL CAST(substr(isoyyyyww, -2) as int64) WEEK
               )
FROM (SELECT '200506' as isoyyyyww);

Идея здесь следующая:

  • Преобразуйте формат yyyyww в дату в середине года.
  • Сокращение даты до начала года ISO.
  • Добавьте обратно соответствующее количество недель.

Вы можете изменить это, если вашим значением является число, а не строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...