如果数据库是SQL Server,可以这样做: 找到输入日期的所在的周一,然后将数据范围限制在这个周一到下个周一之间(包括此周一,不包括下个周一)。所以,关键就在计算周一是哪一天(SQL Server中一周第几天受@@datefirst影响,默认值为7,即周日为一周第一天,但是这里需要周一为一周开始)。
1
2
3
4
5
6
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查询时间是一年中第几周,使用函数 datepart()。
例:查询 ‘2017-1-1’是2017年的第几周,语句如下
select datepart(wk,'2017-1-1')datepart函数说明
一、函数功能:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
二、语法:DATEPART(datepart,date)
三、参数说明:date 参数是合法的日期表达式。datepart 参数可以是下列的值:
四、实例演示
假设我们有下面这个 "Orders" 表:
我们使用如下 SELECT 语句:
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,DATEPART(mm,OrderDate) AS OrderMonth,
DATEPART(dd,OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1
结果:
可以用datename函数,如
select datename(dw,getdate()); 结果为monday
如果你是要中文的,要自己转换一下了,你可以用case datepart(dw,getdate()) when 7 then '星期天' else when '6' then '星期六' else end, 当然7代表星期几要看服务设置的星期天是一个星期的第一天还是最後一天。
以上就是关于如何在数据库取出本周的数据全部的内容,包括:如何在数据库取出本周的数据、SQL SERVER查询时间是一年中第几周的函数、sybase数据库怎么取出当前系统的星期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)