База данных запросов и группа по понедельникам недели

Вы потребляете дату / время и правильно устанавливаете часовой пояс, однако перед форматированием даты и времени вы не устанавливаете желаемый часовой пояс. Вот пример, который принимает часовой пояс UTC и преобразует дату / время в часовой пояс America / Los_Angeles:

<?php
$original_datetime = '04/01/2013 03:08 PM';
$original_timezone = new DateTimeZone('UTC');

// Instantiate the DateTime object, setting it's date, time and time zone.
$datetime = new DateTime($original_datetime, $original_timezone);

// Set the DateTime object's time zone to convert the time appropriately.
$target_timezone = new DateTimeZone('America/Los_Angeles');
$datetime->setTimeZone($target_timezone);

// Outputs a date/time string based on the time zone you've set on the object.
$triggerOn = $datetime->format('Y-m-d H:i:s');

// Print the date/time string.
print $triggerOn; // 2013-04-01 08:08:00
0
задан EGM8686 23 February 2019 в 23:29
поделиться

1 ответ

Ниже для стандартного SQL BigQuery

#standardSQL
SELECT 
  CONCAT('W', CAST(DIV(DATE_DIFF(t.date, start_date, DAY) + 7, 7) AS STRING)) `date`,
  sku, 
  SUM(sales) sales
FROM `project.dataset.table` t JOIN (
  SELECT sku, MIN(t.date) AS start_date
  FROM `project.dataset.table` t
  GROUP BY sku
) s USING(sku)
GROUP BY sku, `date`

Вы можете проверить, поиграть с выше, используя пример данных из вашего вопроса, как в примере ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT DATE '2019-02-23' `date`, '123' sku, 20 sales UNION ALL
  SELECT '2019-02-24', '123', 33 UNION ALL
  SELECT '2019-02-25', '123', 45 UNION ALL
  SELECT '2019-02-20', '456', 15 UNION ALL
  SELECT '2019-02-22', '456', 23 
)
SELECT 
  CONCAT('W', CAST(DIV(DATE_DIFF(t.date, start_date, DAY) + 7, 7) AS STRING)) `date`,
  sku, 
  SUM(sales) sales
FROM `project.dataset.table` t JOIN (
  SELECT sku, MIN(t.date) AS start_date
  FROM `project.dataset.table` t
  GROUP BY sku
) s USING(sku)
GROUP BY sku, `date`
-- ORDER BY sku, `date`  

с результатом

[ 112]
0
ответ дан Mikhail Berlyant 23 February 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: