sql怎么取出某一周的七天数据
每天都有数据,但我要一周一上报,上报的单位是周,当别人要查看某一周的数据的时候,怎么任意按某一天(如2014-11-11)取出他是第几周,并且把一周七天按周一到周末的数据...
每天都有数据,但我要一周一上报,上报的单位是周,当别人要查看某一周的数据的时候,怎么任意按某一天(如2014-11-11)取出他是第几周,并且把一周七天按周一到周末的数据全部罗列出来
在线等待 展开
在线等待 展开
2个回答
展开全部
如果数据库是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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询