0

我们如何获得关于mysql中当前日期的最后四个星期天的日期?谢谢,

假设今天的日期12/14/2012如此sql查询的输出应该如下所示

第一个星期日 | 第二个星期天 | 第三个星期天 | 第四个星期日
2012 年 11 月 11 日 2012 年 11 月 18 日 2012 年 11 月 25 日 2012 年 9 月 12 日

更新:

使用 PHP 我这样做了:

    $date_lastsunday = strtotime("last Sunday");
$w1_sunday = $date_lastsunday - 7 * 24 * 3600;
$w2_sunday = $date_lastsunday - 14 * 24 * 3600;
$w3_sunday = $date_lastsunday - 21 * 24 * 3600;
$w4_sunday = $date_lastsunday - 28 * 24 * 3600;

想知道如何用mysql完成它......

4

1 回答 1

5

如果您希望它们在每一行中

SELECT Curdate() - INTERVAL (Weekday(Curdate())+1) day AS `Sunday` 
UNION 
SELECT Curdate() - INTERVAL (Weekday(Curdate())+1+7*1) day 
UNION 
SELECT Curdate() - INTERVAL (Weekday(Curdate())+1+7*2) day 
UNION 
SELECT Curdate() - INTERVAL (Weekday(Curdate())+1+7*3) day 

如果您希望它们在列中,请替换UNION SELECT,. 像这样

SELECT Curdate() - INTERVAL (Weekday(Curdate())+1) day `1st Sunday`, 
       Curdate() - INTERVAL (Weekday(Curdate())+1+7*1) day `2nd Sunday`, 
       Curdate() - INTERVAL (Weekday(Curdate())+1+7*2) day `3rd Sunday`, 
       Curdate() - INTERVAL (Weekday(Curdate())+1+7*3) day `4th Sunday` 

一种CPU 密集度较低的方式,

SET @OFS=Weekday(Curdate())+1;
SET @CD=curdate();
sELECT @CD - INTERVAL (@OFS) day `1st Sunday`, 
       @CD - INTERVAL (@OFS+7*1) day `2nd Sunday`, 
       @CD - INTERVAL (@OFS+7*2) day `3rd Sunday`, 
       @CD - INTERVAL (@OFS+7*3) day `4th Sunday` 
于 2012-12-13T19:08:14.673 回答