我要实现的功能是计算出一个给定日期是在该月是的第几周,我用SQL Server2005写了一条语句,但是现在在MYSQL的平台上实现不了,因为函数问题吧,我对MYSQL的语法一点也不熟悉,求各位帮帮忙,帮我把下面的SQL语句转换成MYSQL的语法,一样能实现相同的功能,另外,我觉得我这样的写法有些复杂了,大家有没有更简便一点的方法呢
DECLARE @d datetime
set @d ='2010-08-30 21:21:14'
select convert(char(2),datepart(mm,@d))+'月第'+convert(varchar(20),(DATEPART(WEEK,@d)-DATEPART(WEEK,dateadd(mm,1,dateadd(dd,-1,dateadd(mm,-1,convert(char(8),@d,120)+'01')))) ))+'周' as 周数

解决方案 »

  1.   

    SET @dd='2010-8-24';
    select WEEK(@dd,1)-WEEK(DATE(CONCAT(YEAR(@dd),'-',MONTH(@dd),'-01')),1)+1
      

  2.   

    这个是SQL给定日期是在该月是的第几周
    SELECT DATEPART(WEEK,@Date)-DATEPART(WEEK,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0))+1 [WeekOfMonth
      

  3.   


    我测试你这个语句报语法错误呢:错误如下:SELECT DATEPART(WEEK,@Date)-DATEPART(WEEK,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0))+11582-Incorrect parameter count in the call to native function 'DATEDIFF'
      

  4.   

    mysql> set @d ='2010-08-30 21:21:14';
    Query OK, 0 rows affected (0.00 sec)mysql> select concat(month(@d),'月第',WEEK(@d)-WEEK(@d-interval day(@d) day),'周') as 周数;
    +----------+
    | 周数     |
    +----------+
    | 8月第5周 |
    +----------+
    1 row in set (0.00 sec)mysql>
      

  5.   

    SELECT WEEK(@dd,7)-WEEK(DATE(CONCAT(YEAR(@dd),'-',MONTH(@dd),'-01')),7)+
    IF(WEEK(@dd,7)=WEEK(DATE(CONCAT(YEAR(@dd),'-',MONTH(@dd),'-01')),7),1,0)
    ;