Из моего прочтения документации это должно работать:
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.
- Добавьте обратно соответствующее количество недель.
Вы можете изменить это, если вашим значением является число, а не строка.