2014-09-01 137 views
0

,而不是我有我的SQL语句的这一部分,我请根据所输入的日期1周:的MySQL上个月获得特定周

SELECT DATE_FORMAT(md.`mydate`, '%d.%m.%Y'), 
... 
DAYNAME(md.`mydate`) FROM `mydates` md 
LEFT JOIN (SELECT * FROM `import` 
    WHERE `Zeitspanne` != 'Anwesenheit' 
    AND `Person` = '".mysql_real_escape_string($expName)."') g 
    ON (md.`mydate` = STR_TO_DATE(g.`Datum`, '%d.%m.%Y')) 
WHERE WEEK(md.`mydate`,1) = WEEK('".$getStart[2].$d.$getStart[1].$d.$getStart[0]."',1) 
AND YEAR(md.`mydate`) = YEAR('".$getStart[2].$d.$getStart[1].$d.$getStart[0]."')"; 

现在我要选择的最后一个月(在此情况9月)而不是像这样的用户特定的一周:

LEFT JOIN (
    SELECT * FROM `import` 
    WHERE `Zeitspanne` != 'Anwesenheit' 
    AND `Person` = '".mysql_real_escape_string($expName)."') g 
    ON (md.`mydate` = STR_TO_DATE(g.`Datum`, '%d.%m.%Y')) 
WHERE MONTH(md.`mydate`,1) = MONTH('".$getStart[2].$d.$getStart[1].$d.$getStart[0]."' - INTERVAL 1 MONTH)) 
AND YEAR(md.`mydate`) = YEAR('".$getStart[2].$d.$getStart[1].$d.$getStart[0]."' - INTERVAL 1 MONTH)"; 

...但它似乎不工作。

+0

你可以发布一些数据让我们了解你想要什么 – 2014-09-01 15:15:09

+0

为了更好的理解,我有这个小提琴,它选择了一周的员工的不同数据。 http://sqlfiddle.com/#!2/130d8e/1 – 2014-09-01 15:19:22

+1

所以最新的问题? http://sqlfiddle.com/#!2/130d8e/25 – 2014-09-01 15:24:43

回答

1

的问题是要传递一个额外的参数来MONTH() 我也并不认为你需要做的一年时间间隔(但你可能想不知道)

变化WHERE MONTH(md.mydate,1)WHERE MONTH(md.mydate)

相关问题