Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在where语句中使用星期几_Sql_Date_Hive_Hiveql_Dayofweek - Fatal编程技术网

Sql 在where语句中使用星期几

Sql 在where语句中使用星期几,sql,date,hive,hiveql,dayofweek,Sql,Date,Hive,Hiveql,Dayofweek,使用配置单元SQL,我当前有一个查询,它使用以下语句在每个星期天运行 Select * from tableA where date between date_add(current_date, -7) and date_Add(current_Date, -1) 如果发生了什么事情,这段代码必须在周一运行,我必须手动将日期添加到-8和-2。有没有办法让它从上个星期天运行到上个星期六,这样我就不必每次运行时都手动更改数字。上个星期天是:下一天(date\u sub(当前日期,7),“SUN”)

使用配置单元SQL,我当前有一个查询,它使用以下语句在每个星期天运行

Select * from tableA
where date between date_add(current_date, -7) and date_Add(current_Date, -1)

如果发生了什么事情,这段代码必须在周一运行,我必须手动将日期添加到-8和-2。有没有办法让它从上个星期天运行到上个星期六,这样我就不必每次运行时都手动更改数字。

上个星期天是:
下一天(date\u sub(当前日期,7),“SUN”)

上周六是:
下一天(日期子日期(当前日期,7),“周六”)

我想你需要在星期天之前(减去-14)

如果今天(2021-04-28)执行,则给出2021-04-18(星期日)和2021-04-24(星期六)

如果执行2021-04-26(星期一),则给出相同的2021-04-18(星期日)和2021-04-24(星期六)

如果在上周(2021-05-01)以外的任何一天执行,则其工作原理相同。如果在周六执行,则选择2021-05-01作为结束日期,2021-04-18作为开始日期

如果您需要,如果在2021-05-01星期六执行,也可以正常工作,
您可以将开始日期计算为
date\u sub(下一天(date\u sub(当前日期,7),'SAT'),6)
(星期六减去6)

这是Microsoft SQL server吗?MySql,Oracle?SQLite?@AhmadI道歉。我更新了原来的帖子,告知我使用的是HIVE SQL。这是否可以在周一抓取前一周的周日(8天前),而不是前一天(1天前)?
Select * from tableA
  where date between next_day(date_sub(current_date, 14), 'SUN') 
         and next_day(date_sub(current_date, 7), 'SAT')