Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
Mysql 提取上周数据(而不是最近7天)_Mysql_Sql_Datetime_Timestamp - Fatal编程技术网

Mysql 提取上周数据(而不是最近7天)

Mysql 提取上周数据(而不是最近7天),mysql,sql,datetime,timestamp,Mysql,Sql,Datetime,Timestamp,我有以下格式的数据 id - autoincrement myDate - timestamp 我想提取的是上周的ID 注意到上周,我指的是从周六到周四,而不是最后7天。考虑到当前日期(2013年2月12日),对我来说,上周将是2013年2月2日至2013年2月8日 我知道你会说,一周从周日开始,但由于我在阿拉伯国家工作,这里周五休息,周六开始工作。 我知道在过去的7天里,它会低于代码 介于NOW()和DATE_SUB之间(NOW(),间隔7天) 您能否尝试以下方法来计算所需的结果:

我有以下格式的数据

id     - autoincrement
myDate - timestamp
我想提取的是上周的ID

注意到上周,我指的是从周六到周四,而不是最后7天。考虑到当前日期(2013年2月12日),对我来说,上周将是2013年2月2日至2013年2月8日

我知道你会说,一周从周日开始,但由于我在阿拉伯国家工作,这里周五休息,周六开始工作。

我知道在过去的7天里,它会低于代码

介于NOW()和DATE_SUB之间(NOW(),间隔7天)


您能否尝试以下方法来计算所需的结果:

SELECT *,WEEKOFYEAR(dt),DAYOFWEEK(dt),DAYNAME(dt), DAYOFWEEK(NOW()),WEEKOFYEAR(NOW()) 
FROM tab1 
WHERE 1
AND 
(
  (DAYOFWEEK(NOW()) = 1 OR DAYOFWEEK(NOW()) = 6 OR DAYOFWEEK(NOW()) = 7) 
  AND 
  WEEKOFYEAR(dt) = WEEKOFYEAR(NOW()) AND DAYOFWEEK(dt) < 6
)
OR 
(    
  (DAYOFWEEK(NOW()) = 2 OR DAYOFWEEK(NOW()) = 3 OR DAYOFWEEK(NOW()) = 4  
  OR DAYOFWEEK(NOW()) = 5)
  AND
  (
     (
      (WEEKOFYEAR(dt) = WEEKOFYEAR(NOW())-2 AND DAYOFWEEK(dt) >= 6)
      OR 
      (WEEKOFYEAR(dt) = WEEKOFYEAR(NOW())-1 AND DAYOFWEEK(dt) > 1 AND DAYOFWEEK(dt) < 6)
     )
  )
);
SELECT*,WEEKOFYEAR(dt),DAYOFWEEK(dt),DAYNAME(dt),DAYOFWEEK(NOW()),WEEKOFYEAR(NOW())
从表1开始
其中1
及
(
(DAYOFWEEK(NOW())=1或DAYOFWEEK(NOW())=6或DAYOFWEEK(NOW())=7)
及
WEEKOFYEAR(dt)=WEEKOFYEAR(NOW())和DAYOFWEEK(dt)<6
)
或
(    
(DAYOFWEEK(NOW())=2或DAYOFWEEK(NOW())=3或DAYOFWEEK(NOW())=4
或星期五(现在())=5)
及
(
(
(WEEKOFYEAR(dt)=WEEKOFYEAR(NOW())-2和DAYOFWEEK(dt)>=6)
或
(WEEKOFYEAR(dt)=WEEKOFYEAR(NOW())-1和DAYOFWEEK(dt)>1和DAYOFWEEK(dt)<6)
)
)
);
我知道这不是最聪明的方法,但基于此,您可能会得到更好解决方案的提示


情况正好相反;对于介于语法之间的语法,较低的值首先出现<代码>其中周(myDate)=周(现在()-1)和年(myDate)=年(现在())用于正常周。重复这个?@DoSparKot:世界周从星期天开始,我的一周从星期六开始,通过你的查询,我得到了从星期一到星期六的数据。我要从星期六到星期五(@FahimParkar是的,当SqlFiddle宕机时我正在工作,我已经更新了SQL,它又宕机了,但是很快,它会让你开始的,请看我有硬编码的日期来检查各种场景,但你可以测试,一旦完成,用NOW()替换硬编码的“2013-02-10”)函数您可以使用
NOW()
?@FahimParkar使用
NOW()选项创建SQLFIDLE解决方案,但您需要将自己更改为test:)