在SQL Server中按日期获取周数(需要类似于C#函数的T-SQL函数)

在SQL Server中按日期获取周数(需要类似于C#函数的T-SQL函数),c#,sql-server-2008,C#,Sql Server 2008,我一直在使用一个C#函数来获取周月份,我需要在T-SQL中使用一个类似的函数来获得相同的结果 public static int GetWeekNumberOfMonth(DateTime date) { date = date.Date; DateTime firstMonthDay = new DateTime(date.Year, date.Month, 1); var mon = (int)DayOfWeek.Monday; var dofw = (i

我一直在使用一个C#函数来获取周月份,我需要在T-SQL中使用一个类似的函数来获得相同的结果

public static int GetWeekNumberOfMonth(DateTime date)
{
    date = date.Date;

    DateTime firstMonthDay = new DateTime(date.Year, date.Month, 1);

    var mon = (int)DayOfWeek.Monday;
    var dofw = (int)firstMonthDay.DayOfWeek;

    DateTime firstMonthMonday = firstMonthDay.AddDays((DayOfWeek.Monday + 7 - firstMonthDay.DayOfWeek) % 7);

    if (firstMonthMonday > date)
    {
        firstMonthDay = firstMonthDay.AddMonths(-1);
        firstMonthMonday = firstMonthDay.AddDays((DayOfWeek.Monday + 7 - firstMonthDay.DayOfWeek) % 7);
    }

    return (date - firstMonthMonday).Days / 7 + 1;
}
试着这样做:

DECLARE @d DATETIME
SET @d = '2015-10-20'

SELECT DATEPART(WEEK, @d)  -
    DATEPART(WEEK, DATEADD(MM, DATEDIFF(MM,0,@d), 0))+ 1 AS WEEK_OF_MONTH
试着这样做:

DECLARE @d DATETIME
SET @d = '2015-10-20'

SELECT DATEPART(WEEK, @d)  -
    DATEPART(WEEK, DATEADD(MM, DATEDIFF(MM,0,@d), 0))+ 1 AS WEEK_OF_MONTH

sql方面有什么努力吗?我需要将c#函数精确转换为MSSQL在哪种情况下需要“9月的第X周”,其中X=1是9月内开始的第一周?这是一个奇怪的符号,您确定您的用户会熟悉它吗?那么九月一日是哪一周?8月5日的第5周?在sql方面有什么努力吗?我需要将c#函数精确转换为MSSQL在哪种情况下需要“9月X日的第X周”,其中X=1是9月内开始的第一周?这是一个奇怪的符号,您确定您的用户会熟悉它吗?那么九月一日是哪一周?8月的第5周?如果我们使用日期@d='2015-9-30',那么它将重新出现第5周,但实际上是第5周4@Ravi:-不,将“2015-9-1”视为本周的开始,第1周在“2015-9-3”结束,第2周开始。我需要从Monday@Ravi:-那么在这种情况下,“2015-09-05”将是9月1日的第1周?如果我们使用日期@d=“2015-9-30”,那么它将是第5周,但实际上是第5周4@Ravi:-不,将“2015-9-1”视为本周的开始,第1周在“2015-9-3”结束,第2周开始。我需要从Monday@Ravi:-那么在这种情况下,“2015-09-05”将是9月1日的第1周?