2017-02-17 2 views

ответ

4

Использование DATE_TRUNC:

#standardSQL 
SELECT DATE_TRUNC('2017-02-17', MONTH); 

Или, более интересный пример, где ввод является строки в формате YYYY-MM-DD:

#standardSQL 
SELECT DATE_TRUNC(CAST(s AS DATE), MONTH) 
FROM (
    SELECT '2017-02-17' AS s UNION ALL 
    SELECT '2017-02-14' AS s 
); 
+0

Хороший ответ Эллиот. TIL, чтобы можно было привести строку к дате! 'CAST (s AS DATE)' –

0

Если вход в строках, вы можете сделать строку манипуляции вместо того, чтобы упасть в тип DATE, вот несколько возможностей:

#standardSQL 
SELECT 
    REGEXP_REPLACE(s, r'({\d}4-{\d}2)-{\d}2', '\\1-01'), 
    CONCAT(SUBSTR(s, 0, 7), '-01') 
FROM (
    SELECT '2017-02-17' AS s UNION ALL 
    SELECT '2017-02-14' AS s UNION ALL 
    SELECT '1985-08-31' AS s 
); 
Смежные вопросы