【发布时间】:2015-01-01 23:50:52
【问题描述】:
如果开始日是星期二,结束日是星期一,如何找到 date 的周数?
这是示例条件
Date Output
...... ..........
01-Dec-2014 (Monday) - 2014_DECEMBER_WEEK_NO_1
04-Dec-2014 (Thursday) - 2014_DECEMBER_WEEK_NO_1
29-Dec-2014 (Monday) - 2014_DECEMBER_WEEK_NO_4
30-Dec-2014 (Tuesday) - 2014_DECEMBER_WEEK_NO_5
31-Dec-2014 (Tuesday) - 2014_DECEMBER_WEEK_NO_5
我尝试了以下查询:
select CAST(UPPER(DATENAME(YEAR, @FROMDATE)) AS VARCHAR(20))
+'_'+CAST(UPPER(DATENAME(MONTH, @FROMDATE)) AS VARCHAR(20))
+'_WEEK_NO_'+CAST((DAY(@FROMDATE)
+ (DATEPART(DW, DATEADD (MONTH, DATEDIFF (MONTH, 0, @FROMDATE), 0))-1) -1)/7 + 1 AS VARCHAR(10))
如果开始日是星期日,结束日是星期六,则此工作正常。
【问题讨论】:
-
设置一周的第一天并再次运行查询。详情请查看:msdn.microsoft.com/en-za/library/ms181598.aspx
-
@Danish 看起来很有用。但在这种情况下我需要更改查询。你能用
DATEFIRST建议查询吗 -
如果开始日期是星期日,那么今天的 week_no 应该返回 4
-
添加了一个基于:stackoverflow.com/questions/8642870/… 的答案。请让我知道它是否有效。
-
是该月的第一天,接下来的 6 天始终被视为该月的第 1 周?
标签: c# sql-server sql-server-2008