我要做一个报表,这中间有个查询,单位是周。在mysql中使用week(date)函数可以得到date在这一年中是第几周,这似乎可以解决以周为单位的查询,但是
1.week()函数计算的是周日到周六为一周,即周日为该周的第一天,但是现在需求是周一为一周的第一天,这个冲突如何解决?
2.请教个sql:2009年第N周的星期一是几月几号,这个sql怎么写?

解决方案 »

  1.   

    1.week()函数计算的是周日到周六为一周,即周日为该周的第一天,但是现在需求是周一为一周的第一天,这个冲突如何解决?减一天再week()2.请教个sql:2009年第N周的星期一是几月几号,这个sql怎么写?得出2009年随便一天D 的 周 M
    D 减或加上 M和N的差(差多少周) 得到第N周的某一天,然后这一天再减上自己的WEEKDAY()
      

  2.   

    减一天再week() ?不可以吧。。
      

  3.   

    SELECT DATE_FORMAT(日期,'%U');   # 星期天为一星期的第一天
    SELECT DATE_FORMAT(日期,'%u');   # 星期一为一星期的第一天
      

  4.   

    是到2009-01-01,然后加上N周.再减去WEEKDAY,求出这星期的第一天,加上要求的星期几.
      

  5.   

    SELECT TIMESTAMPADD(WEEK,N-1,'2009-01-01')-interval weekday('2009-01-01') day;(N from 1 to 53)
    Thank you ! liangCK.You are so clever that I appreciate you.Good night!