sql怎么取出某一周的七天数据

每天都有数据,但我要一周一上报,上报的单位是周,当别人要查看某一周的数据的时候,怎么任意按某一天(如2014-11-11)取出他是第几周,并且把一周七天按周一到周末的数据... 每天都有数据,但我要一周一上报,上报的单位是周,当别人要查看某一周的数据的时候,怎么任意按某一天(如2014-11-11)取出他是第几周,并且把一周七天按周一到周末的数据全部罗列出来
在线等待
展开
 我来答
南极潇湘水
2014-11-10 · 本人专业生产bug一百年
南极潇湘水
采纳数:515 获赞数:999

向TA提问 私信TA
展开全部
set language N'Simplified Chinese'
select datename(weekday, 数据添加日期列名) as dayOnweek,* from 表名 
where datediff(week,数据添加日期列名,'2014-11-1')=0
Andy_Sun321
2014-11-10 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:727万
展开全部

如果数据库是SQL Server,可以这样做: 找到输入日期的所在的周一,然后将数据范围限制在这个周一到下个周一之间(包括此周一,不包括下个周一)。所以,关键就在计算周一是哪一天(SQL Server中一周第几天受@@datefirst影响,默认值为7,即周日为一周第一天,但是这里需要周一为一周开始)。

declare @dateValue datetime, @startDay datetime
set @dateValue = '2014-11-11' -- 赋需要查询的日期值,不包含时分秒
set @startDay = dateadd(d, CASE WHEN datepart(dw, @dateValue) + @@DATEFIRST > 8 THEN 8 - @@datefirst ELSE 1 - @@datefirst END, dateadd(d,  - datepart(dw, @dateValue) + 1, @dateValue))
select *
from data_table
where date_field >= @startDay and date_field < dateadd(d, 7, @startDay) --将数据限制在从周一开始的7天内  
order by date_field   -- 按日期升序排列

如果是其他数据库,则可以使用类似方法实现。

追问
SQL Server看的不大明白  数据库是mysql的  还是没弄好  绕的有点晕  邦写下贝  加分
追答

MySQL没怎么用,不过下面的SQL是测试过的:

set @dateValue = '2014-11-11'; /* 赋值日期 */
set @startDay = date_add(@date_value, interval -WEEKDAY(@date_value) day); /* 获得日期所在周一的日期 */
/* 获取数据 */ 
select s.*, week(@dateValue) as week_value
from data_table s
where s.date_field >= @startDay and s.date_field < date_add(@startDay, interval 7 day) /*将数据限制在从周一开始的7天内*/
order by date_field;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式