我按照this question上的第一个答案进行操作,但是我的sql查询存在一些问题。我没有任何结果。
我犯了什么错误?
如何始终在每个月的第一天设置CURDATE?

SELECT DATE_FORMAT(`date`, '%Y-%m-%d') , `price`
FROM `sales`
WHERE `id` = :id
AND (`date` BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE())


编辑整个代码:

$verkaufmonat3 = 0;
$verkaufmonatanzahl2 = 0;
$verkaufmonat4 = array();
$sqluser5 = $X['dbh']->prepare("SELECT DATE_FORMAT(`date`, '%Y-%m-%d') , `preis` FROM `verkauf` WHERE `vertreterid` = :id AND (`date` BETWEEN CURDATE(), '%Y-%m-01' - INTERVAL 60 DAY AND CURDATE(), '%Y-%m-01')");
$sqluser5->execute(array(
':id'=>$_SESSION['id']
));
$verkaufmonatanzahl2 = $sqluser5->rowCount();
$verkaufmonat4 = $sqluser5->fetchAll();
for ($a = 0; $a <= $verkaufmonatanzahl2; $a++) {
        $verkaufmonat3 += $verkaufmonat2[$a]['preis'];
}


在我的数据库中,我在28.10.2016的价格有一笔交易。价值50欧元。所以我的$ verkaufmonat3应该是50,但不是,是0。

最佳答案

您的问题尚不清楚,但是要获得当前月份的第一天,您可以使用

 SELECT DATE_FORMAT(CURDATE() , '%Y-%m-1')


因此,如果您想要上个月的数据,请尝试

SELECT
    DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 MONTH as first_day,
    DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 DAY as last_day


含义

 WHERE `date` BETWEEN  DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 MONTH
                  AND  DATE_FORMAT(CURDATE() , '%Y-%m-1') - INTERVAL 1 DAY

关于mysql - sql接受上个月的所有查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40635314/

10-10 08:23