Изменить день начала недели - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь изменить день начала недели, но не могу достичь в настоящее время с понедельника по воскресенье, оно должно быть сделано воскресенье-суббота Я пытался использовать этот запрос в приведенном ниже наборе данных invoice date и invoice_week

 SELECT invoice_date,
        weekofyear(invoice_date) as invoice_week,
        datesub(invoice_date,1),
        weekofyear(datesub(invoice_date,1)) as invoice_week1 
   from table

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Нашел решение, которое работает. Учитывая дату, вот Дата начала недели и конца недели, если вам нужна неделя воскресенья - субботы, а не недели понедельника - воскресенья, как по умолчанию.

SET var:date=2019-01-06;
select  to_date(IF( dayofweek(cast('${var:date}' as timestamp)) = 1, cast('${var:date}' as timestamp), trunc(cast('${var:date}' as timestamp), 'd') - interval 1 day)) as startOfWeek, to_date(IF( dayofweek(cast('${var:date}' as timestamp)) = 1, (trunc(cast('${var:date}' as timestamp) + interval 1 day, 'd') + interval 5 day), (trunc(cast('${var:date}' as timestamp), 'd') + interval 5 day) )) as endOfWeek;
+-------------+------------+
| startofweek | endofweek  |
+-------------+------------+
| 2019-01-06  | 2019-01-12 |
+-------------+------------+
0 голосов
/ 05 октября 2018

Я думаю, вместо того, чтобы вычитать дату на 1, вы должны добавить дату на 1:

select 
        invoice_date,
        weekofyear(invoice_date) as invoice_week,
        adddate(invoice_date,1),
        weekofyear(adddate(invoice_date,1)) as invoice_week1 
from(
        select cast('2018-01-07 16:00:00' as timestamp) invoice_date
)stg
...