在microsoft服务器中的SQL语句中,有一个内置函数来获取周号,但它是一年中的一周。
Select DatePart(week, '2012/11/30') // **returns 48**返回值48是一年中的周数。
我想得到的不是48,而是1、2、3或4 (月周数)。我认为这个月的周数可以通过这个星期的月数模块来实现。例如:
Select DATEPART(week, '2012/11/30')%MONTH('2012/11/30')但是我想知道在MS中是否还有其他内置函数可以获得本月的WeekNumber。
发布于 2012-10-29 10:35:40
这里有两种不同的方式,两种方式都是假设周从星期一开始
如果您想要周全,所以它们属于它们开始的月份:因此,周六2012-09-01和星期日2012-09-02是第4周,而2012-09-03是第1周,请使用以下命令:
DECLARE @date date = '2012-09-01'
SELECT (day(datediff(d,0,@date)/7*7)-1)/7+1如果您的周数减少,那么2012-09-01星期六和2012-09-02星期日是第一周,而2012-09-03是第二周,请使用以下命令:
DECLARE @date date = '2012-09-01'
SELECT
datediff(ww,datediff(d,0,dateadd(m,datediff(m,7,@date),0)
)/7*7,dateadd(d,-1,@date))+1我收到杰拉尔德的一封电子邮件。他指出了第二种方法的一个缺陷。这个应该现在就解决。
我收到了本·威尔金斯的一封邮件。他指出了第一种方法的一个缺陷。这个应该现在就解决。
发布于 2013-08-06 05:20:35
DECLARE @DATE DATETIME
SET @DATE = '2013-08-04'
SELECT DATEPART(WEEK, @DATE) -
DATEPART(WEEK, DATEADD(MM, DATEDIFF(MM,0,@DATE), 0))+ 1 AS WEEK_OF_MONTH发布于 2012-10-29 06:56:58
没有内置功能。这取决于你每月每周的意思。你可能指的是前七天(第一周),第二天(第二周),等等。在这种情况下,只是
(DATEPART(day,@Date)-1)/7 + 1
如果要使用与DATEPART( week,)相同的周编号,则可以使用月份第一个星期数与所述日期(+1)之间的差异:
(DATEPART(week,@Date)- DATEPART(week,DATEADD(m, DATEDIFF(m, 0, @Date), 0))) + 1
或者,你可能需要其他的东西,这取决于你所指的周数。
https://stackoverflow.com/questions/13116222
复制相似问题