Sql 更改一周的开始日期黑斑羚
我试图改变一周的开始日期,但无法实现 现在是星期一到星期天,应该是星期天到星期六 我尝试在以下数据集Sql 更改一周的开始日期黑斑羚,sql,impala,Sql,Impala,我试图改变一周的开始日期,但无法实现 现在是星期一到星期天,应该是星期天到星期六 我尝试在以下数据集发票日期和发票周 SELECT invoice_date, weekofyear(invoice_date) as invoice_week, datesub(invoice_date,1), weekofyear(datesub(invoice_date,1)) as invoice_week1 from table 我认为不应该用1减
发票日期
和发票周
SELECT invoice_date,
weekofyear(invoice_date) as invoice_week,
datesub(invoice_date,1),
weekofyear(datesub(invoice_date,1)) as invoice_week1
from table
我认为不应该用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
找到了一个有效的解决方案。给定一个日期,如果您想要周日-周六周,而不是默认的周一-周日周,那么这里是一周开始和结束的日期
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 |
+-------------+------------+