请教通过日期查出该日期在当月的周数当月的周数?这种遇到跨周的怎么算?你还是获取到本年的周数吧?select DATEPART ( week , date )
楼主问题最好在具体描述一下, 取指定日期的周数是 datepart(wk, getdate())
c.按周分组问题描述:如果让你求每周的订单数量 有人会想到用DATEPART(week,DT)来分组 这样有一个问题:对于一周跨年的日期,你会得到2个不同的周数解决方法:由于每周的分组因子是一样的(这里的分组因子我理解是你在一周内用DATEPART(WEEKDAY,DT)发生星期数是唯一的在这周内)书上的意思就是 任意一条记录 减去日期的星期数+1 一定是可以返回本周的第一天日期 加上7天-日期的星期数 就是这周的最后一天了这样就可以根据一周的第一天和最后一天分组了(相当巧妙我觉得)SELECT od - wd + 1 AS week_start, od + 7 - wd AS week_end, COUNT(*) AS numorders FROM (SELECT OrderID AS oid, OrderDate AS od, DATEPART(weekday, OrderDate + @@DATEFIRST - 1) AS wd FROM dbo.Orders) AS D GROUP BY od - wd + 1, od + 7 - wd; GO 例子可以很好说明问题,不解释了 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/feixianxxx/archive/2009/10/15/4677124.aspx
select datediff(week,cast(convert(char(8),getdate(),120)+'01' as datetime),getdate())
把getdate()替换成你的时间或时间字段
declare @dt datetime set @dt='2009-10-30 00:00:00' select DATEPART(Weekday,CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')) select (DATEPART(DAY,@dt)-DATEPART(Weekday,CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')))%7+1
楼主问题最好在具体描述一下, 取指定日期的周数是 datepart(wk, getdate())
COUNT(*) AS numorders
FROM (SELECT OrderID AS oid, OrderDate AS od,
DATEPART(weekday, OrderDate + @@DATEFIRST - 1) AS wd
FROM dbo.Orders) AS D
GROUP BY od - wd + 1, od + 7 - wd;
GO
例子可以很好说明问题,不解释了
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/feixianxxx/archive/2009/10/15/4677124.aspx
declare @dt datetime
set @dt='2009-10-30 00:00:00'
select DATEPART(Weekday,CONVERT(datetime,CONVERT(char(8),@dt,120)+'1'))
select (DATEPART(DAY,@dt)-DATEPART(Weekday,CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')))%7+1
select
DATEPART (week , getdate())
- datepart(week,cast(year(getdate())as varchar)+'-'+cast(month(getdate())as varchar)+'-01')
+1