Προς το περιεχόμενο

PDO GROUP BY


dbouraza
Μετάβαση στην απάντηση Απαντήθηκε από dbouraza,

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλημέρα σε ολους.

Θα ήθελα την βοήθεια σας σε ένα πρόβλημα. Έχω ένα πίνακα σε μια mysql βάση. Τα πεδία είναι ID ΕΙΔΟΣ ΗΜΕΡΟΜΗΝΙΑ.

Η ημερομηνία αποθηκεύεται ως strtotime

Προσπαθώ να κάνω group τις ημερομηνίες και να μετρήσω τα rows σε κάθε group.

Εχω πχ μέσα 

10-03-2023 22:19:51 PM
10-03-2023 19:49:32 PM
10-03-2023 19:46:26 PM
10-03-2023 17:56:28 PM
28-02-2023 11:10:02 AM
24-02-2023 10:12:20 AM
23-01-2023 09:10:24 AM

Ο κώδικας για το group είναι

$stmta = $pdo->prepare('SELECT * FROM tablename GROUP BY MONTH(DATE_FORMAT(thedate, "%m")), YEAR(DATE_FORMAT(tthedate, "%Y"))');
$stmta->execute();
$resultsa = $stmta->fetchAll();
foreach( $resultsa as $row ) {

echo date("m-Y", $row['thedate']);
}

Αλλα μου φέρνει μόνο 3-2023 και σταματαει.

Μηπως μπορεί κάποιος να βοηθήσει?

Σας ευχαριστω.
 

Επεξ/σία από dbouraza
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για αρχή βλέπω πως οι ημερομηνίες σου δεν είναι σωστές.

Π.χ έχεις αυτή την ημερομηνία 10-03-2023 22:19:51 PM που είναι σε 24ωρο format αλλά έχεις και το PM.

Επίσης στο query έχεις ένα typo στο column name YEAR(DATE_FORMAT(tthedate, "%Y")) 

2 hours ago, dbouraza said:

$pdo->prepare('SELECT * FROM tablename GROUP BY MONTH(DATE_FORMAT(thedate, "%m")), YEAR(DATE_FORMAT(tthedate, "%Y"))');

Τέλος θα πρέπει να επιλέξεις το πεδίο που κάνεις group by στο SELECT σου και όχι να δώσεις *

Δες εδώ ένα παράδειγμα που έκανα στα γρήγορα μήπως σε βοηθήσει.

https://onecompiler.com/mysql/3z2dyrueg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Λύση
Δημοσ. (επεξεργασμένο)

Ευχαριστω για την απάντηση σου. Στη βάση την ημερομηνία την βάζω σαν strtotime δηλαδή το  10-03-2023 22:19:51 είναι 1678486791 (Το PM ειναι ενα επιπλέον που βαζω οταν την διαβάζω από τη βάση date("d-m-Y H:i:s A", $row['tηεdate']) (το οποίο δεν το είχα προσέξει οτι το έχω βάλει).

Συγγνώμη που δεν το διευκρίνισα

Τελικά, παρατηρώντας το παράδειγμα σου κατάλαβα το επειδη ήταν σε unix timestamp το καλούσα λάθος. Οταν καλεσα την ημερομηνια με FROM_UNIXTIMESTAMP δούλεψε μια χαρα. Σε ευχαριστώ πολύ για το χρόνο σου.

Επεξ/σία από dbouraza
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...