Records ophalen van laatste week/maand/jaar.
Ik wil de omzet ophalen van vandaag, week, maand en het jaar.
Nu vermoed ik dat ik iets niet goed doe:
In de order tabel staat een datum kolom wanneer de order is geplaatst, deze kan ik dus gebruiken.
Dit is me huidige code om de orders van afgelopen 7 dagen op te halen:
Pakt dit alle orders van de laatste 7 dagen vanaf vandaag....?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php // Pak alle bestellingen van vandaag en met de status in behandeling of verzonden.
$database = new databaseGigant();
$q = 'SELECT * FROM oc_order WHERE (order_status_id = 15) AND date_added >= DATE_SUB(NOW(), INTERVAL 7 DAY) ';
$result = $database->query($q);
$aantal = mysqli_num_rows($result);?>
$database = new databaseGigant();
$q = 'SELECT * FROM oc_order WHERE (order_status_id = 15) AND date_added >= DATE_SUB(NOW(), INTERVAL 7 DAY) ';
$result = $database->query($q);
$aantal = mysqli_num_rows($result);?>
Pakt dit alle orders van de laatste maand vanaf vandaag....?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// Pak alle bestellingen van vandaag en met de status in behandeling of verzonden.
$database = new databaseGigant();
$q = 'SELECT * FROM oc_order WHERE (order_status_id = 15) AND date_added >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) ';
$result = $database->query($q);
$aantal = mysqli_num_rows($result);
?>
// Pak alle bestellingen van vandaag en met de status in behandeling of verzonden.
$database = new databaseGigant();
$q = 'SELECT * FROM oc_order WHERE (order_status_id = 15) AND date_added >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) ';
$result = $database->query($q);
$aantal = mysqli_num_rows($result);
?>
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND date_added >= curdate() - INTERVAL DAYOFWEEK(curdate()) + 6 DAY
');
?>
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND date_added >= curdate() - INTERVAL DAYOFWEEK(curdate()) + 6 DAY
');
?>
Met de laatste maand kun je meerdere kanten op: dat kan bijvoorbeeld de afgelopen 30 dagen zijn (en dan hergebruik je de bovenstaande query), maar bijvoorbeeld ook geheel juli 2016 tot nu toe als het vandaag 11 juli 2016 is. Je zou eigenlijk even moeten testen wat het gemakkelijkst werkt.
Gewijzigd op 11/07/2016 07:02:08 door Ward van der Put
Hoe zou de query moeten zijn als ik in plaats van de afgelopen 7 dagen alleen de omzet wil krijgen gerekend van maandag t/m zondag. Dus dat vandaag (maandag) hij pas begint met rekenen.
Hetzelfde voor de maand dus van de eerste t/m de laatste dag van de maand.
Alvast super bedankt!
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND YEARWEEK(date_added, 1) = YEARWEEK(CURDATE(), 1)
');
?>
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND YEARWEEK(date_added, 1) = YEARWEEK(CURDATE(), 1)
');
?>
Een vergelijkbare functie bestaat niet voor jaar plus maand, dus dan moet je die uitsplitsen met de functies YEAR() en MONTH() voor de huidige maand:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND YEAR(date_added) = YEAR(CURDATE())
AND MONTH(date_added) = MONTH(CURDATE())
');
?>
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND YEAR(date_added) = YEAR(CURDATE())
AND MONTH(date_added) = MONTH(CURDATE())
');
?>
Gewijzigd op 11/07/2016 08:39:57 door Ward van der Put
Is er ook mogelijkheid om vorige week, maand en jaar op te halen?
Gewijzigd op 11/07/2016 10:25:50 door Furio Scripting
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND YEAR(date_added) = YEAR(CURDATE()) - 1
');
?>
$result = $database->query('
SELECT *
FROM oc_order
WHERE order_status_id = 15
AND YEAR(date_added) = YEAR(CURDATE()) - 1
');
?>
Voor andere datumbereiken is het echter gemakkelijker om te rekenen met een INTERVAL. Voor alle orders van vorige maand trek je bijvoorbeeld INTERVAL 1 MONTH af van de huidige maand én van het huidige jaar:
HARTELIJK DANK Ward!!!! Deze query's werken perfect