如果数据库是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
week 函数是返回日期的星期数,最大是53周。可接收俩个参数date,mode。(date指定日期,mode 指定从星期几显示)
select from wap_content where week(curdate())=week(created_at);显示的是当周的数据,从星期天开始。
从星期一开始显示:因为(周一、三、四、六)一年多三天所以你得加上一周开始计算
select from wap_content where week(curdate())+1=week(created_at,1);希望对你有帮助。
select dateadd(day,-Datepart(weekday, getdate()+@@DateFirst -1)-6,getdate())--不管今天星期几,返回上周一
select dateadd(day,-Datepart(weekday, getdate()+@@DateFirst -1), getdate())--不管今天星期几,返回上周末
不过你要查询的话。。。时间范围的结尾不能用周末,要是周末的23:59:59,或这周一,SQL语句是select dateadd(day,-Datepart(weekday, getdate()+@@DateFirst -1)+1, getdate())
--本周星期一
SELECT DATEADD(dd,(case @@datefirst when 7 then 2 else 2-@@datefirst end)-datepart(dw,getdate()),getdate())
--本周星期日
SELECT DATEADD(dd,6+(case @@datefirst when 7 then 2 else 2-@@datefirst end)-datepart(dw,getdate()),getdate())
--上周星期日
SELECT DATEADD(day,-(@@datefirst+datepart(weekday,getdate())-1)%7,getdate())
--格式化后的下周第一天
SELECT convert(char(10),(dateadd(dd,6+(case @@datefirst when 7 then 2 else 2-@@datefirst end)-datepart(dw,getdate()-1),getdate())),120)
--本月第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--下月第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0)
--本月最后一天
SELECT DATEADD(dd, -1, DATEADD(mm, 1+ DATEDIFF(mm, 0, getdate()), 0))
--本年第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)
--下一年第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()+366),0)
--格式化时间
SELECT CONVERT(CHAR(10),getdate(),120)
GETDATE()
是获取当前时间的函数
取上周时间 需要用当前的减几天
需要知道 你想取得具体是什么时间
>
Oracle数据库:
第一个:SELECT DECODE(dw,
0,
'星期天',
1,
'星期一',
2,
'星期二',
3,
'星期三',
4,
'星期四',
5,
'星期五',
6,
'星期六') WEEK_DAY
FROM (SELECT 7 -
TO_NUMBER(NEXT_DAY(TO_DATE('2012-12-12', 'yyyy-mm-dd'), 1) -
TO_DATE('2012-12-12', 'yyyy-mm-dd')) dw
FROM dual);
第二个语句:
SELECT TO_CHAR(TO_DATE('2012-12-12', 'YYYY-MM-DD'), 'DAY') WEEK_DAY
FROM DUAL
SqlServer数据库:
select case datepart(weekday, getdate())
when 1 then
'星期天'
when 2 then
'星期一'
when 3 then
'星期二'
when 4 then
'星期三'
when 5 then
'星期四'
when 6 then
'星期五'
when 7 then
'星期六'
end
扩展资料:
SQL相关函数:
SQL Aggregate 函数:SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。
有用的 Aggregate 函数:AVG() - 返回平均值,COUNT() - 返回行数,FIRST() - 返回第一个记录的值,LAST() - 返回最后一个记录的值,MAX() - 返回最大值,MIN() - 返回最小值,SUM() - 返回总和
SQL Scalar 函数:SQL Scalar 函数基于输入值,返回一个单一的值。
有用的 Scalar 函数:UCASE() - 将某个字段转换为大写,LCASE() - 将某个字段转换为小写,MID() - 从某个文本字段提取字符;
LEN() - 返回某个文本字段的长度,ROUND() - 对某个数值字段进行指定小数位数的四舍五入,NOW() - 返回当前的系统日期和时间,FORMAT() - 格式化某个字段的显示方式。
参考资料:
--查某个日期所属的这个星期的记录
declare @datetime datetime
set @datetime = (SELECT time from user where 条件)
--前面两行的作用是从time列中按某条件取出一个值(即取出一个时间)
--下面才好根据这个时间判断一周内的记录
SET DATEFIRST 1 --设定周一为一周的第一天,默认为周日为第一天
SELECT from user
where time between (@datetime-DATEPART (Weekday,@datetime)+1)
and (@datetime+7-DATEPART (Weekday,@datetime)+1)
注:DATEPART(Weekday,datetime) 返回datetime是该周内的第几天。用法请参考Transact-SQL 参考
--查某个日期所属的这个季度的记录
SELECT from user
where time
between CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@datetime)3-Month(@datetime)-2,@datetime),120)+'1')
and DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@datetime)3-Month(@datetime),@datetime),120)+'1')
以上就是关于sql server 怎么查看最近一周的数据全部的内容,包括:sql server 怎么查看最近一周的数据、sql查询一周内的数据、每天数据库要查询资料,日期条件为上周一至上周日等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)