如何计算当前日期的最后四个星期日的日期

sof*_*nic 0 php mysql date

我们怎样才能得到关于mysql当前日期的最后四个星期日的日期?谢谢,

让我们说今天的日期是12/14/2012这样的sql查询输出应该如下所示

1st Sunday  | 2nd Sunday  |  3rd Sunday  |  4rth Sunday
11/11/2012    18/11/2012     25/11/2012     09/12/2012

更新:

用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;
Run Code Online (Sandbox Code Playgroud)

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

Shi*_*dim 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 
Run Code Online (Sandbox Code Playgroud)

如果您希望它们在列中,请替换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` 
Run Code Online (Sandbox Code Playgroud)

少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` 
Run Code Online (Sandbox Code Playgroud)