Οι ημερομηνίες και οι ώρες είναι σημαντικές, συμβάλλουν στη διατήρηση των οργανωμένων πραγμάτων και αποτελούν αναπόσπαστο μέρος κάθε λειτουργίας λογισμικού.
Η αποτελεσματική συνεργασία μαζί τους στη βάση δεδομένων μπορεί μερικές φορές να φαίνεται συγκεχυμένη, είτε λειτουργεί σε διάφορες ζώνες ώρας, προσθέτοντας / αφαιρώντας ημερομηνίες και άλλες λειτουργίες.
Μάθετε τις διάφορες διαθέσιμες λειτουργίες της MySQL για εύκολη διαχείριση και διαχείριση ημερομηνιών / ωρών στη βάση δεδομένων σας.
Εργασία με ζώνες ώρας
Για να διατηρήσετε τα πράγματα τυποποιημένα, θα πρέπει να εργάζεστε μόνο με ημερομηνίες / ώρες στη ζώνη ώρας UTC. Κάθε φορά που δημιουργείτε σύνδεση με τη βάση δεδομένων MySQL, θα πρέπει να αλλάζετε τη ζώνη ώρας σε UTC, η οποία μπορεί να γίνει με την ακόλουθη δήλωση SQL:
ΡΥΘΜΙΣΗ ΩΡΑ_ΖΩΝΗ = '+0: 00'
Δεδομένου ότι όλες οι ημερομηνίες θα αποθηκευτούν τώρα σε UTC, γνωρίζετε πάντα με τι εργάζεστε, κάνοντας τα πράγματα πιο απλοϊκά και απλά.
Όταν είναι απαραίτητο μπορείτε εύκολα μετατρέψτε τη ζώνη ώρας
οποιασδήποτε τιμής ημερομηνίας / χρονικής σήμανσης με το πρακτικό CONVERT_TZ () Λειτουργία MySQL. Πρέπει να γνωρίζετε πρώτα το όφσετ, για παράδειγμα, το PST στη δυτική ακτή της Βόρειας Αμερικής είναι UTC -08: 00, ώστε να μπορείτε να χρησιμοποιήσετε:Το PolyTime, μια νέα εφαρμογή από το MakeUseOf, διευκολύνει τη σύγκριση των ζωνών ώρας σε όλο τον κόσμο. Δείτε τι μπορείτε να κάνετε με αυτό και πώς λειτουργεί.
SELECT CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');
αυτο εχει ως αποτελεσμα 2021-02-04 13:47:23 που είναι ακριβώς σωστό. Τα τρία επιχειρήματα πέρασαν CONVERT_TZ () είναι πρώτα η ημερομηνία / χρονική σήμανση με την οποία ξεκινάτε (χρησιμοποιήστε τώρα () για την τρέχουσα ώρα), η δεύτερη θα είναι πάντα '+0:00' δεδομένου ότι όλες οι ημερομηνίες είναι υποχρεωτικές σε UTC στη βάση δεδομένων και η τελευταία είναι η μετατόπιση που θέλουμε να μετατρέψουμε την ημερομηνία σε.
Προσθήκη / αφαίρεση ημερομηνιών
Πολλές φορές πρέπει να προσθέσετε ή να αφαιρέσετε από ημερομηνίες, όπως εάν πρέπει να ανακτήσετε εγγραφές πριν από μια εβδομάδα ή προγραμματίστε κάτι ένα μήνα από τώρα.
Ευτυχώς η MySQL έχει το εξαιρετικό DATE_ADD () και DATE_SUB () λειτουργίες καθιστώντας αυτήν την εργασία εξαιρετικά εύκολη. Για παράδειγμα, μπορείτε να αφαιρέσετε δύο εβδομάδες από την τρέχουσα ημερομηνία με τη δήλωση SQL:
SELECT DATE_SUB (τώρα (), διάστημα 2 εβδομάδων)
Αν αντίθετα θέλετε να προσθέσετε τρεις ημέρες σε μια υπάρχουσα χρονική σήμανση, θα χρησιμοποιούσατε:
SELECT DATE_ADD ('2021-02-07 11:52:06', διάστημα 3 ημερών)
Και οι δύο λειτουργίες λειτουργούν το ίδιο, το πρώτο όρισμα είναι η χρονική σήμανση με την οποία ξεκινάτε και το δεύτερο όρισμα είναι το διάστημα για προσθήκη ή αφαίρεση. Το δεύτερο όρισμα είναι πάντα το ίδιο ξεκινώντας από τη λέξη διάστημα ακολουθούμενη από μια αριθμητική τιμή και το ίδιο το διάστημα, το οποίο μπορεί να είναι οποιοδήποτε από τα ακόλουθα: δευτερόλεπτο, λεπτό, ώρα, ημέρα, εβδομάδα, μήνας, τρίμηνο, έτος.
Για ένα άλλο παράδειγμα, εάν θέλετε να ανακτήσετε όλα τα στοιχεία σύνδεσης που πραγματοποιήθηκαν τα τελευταία 34 λεπτά, θα μπορούσατε να χρησιμοποιήσετε μια δήλωση SQL όπως:
SELECT * FROM logins WHERE login_date> = DATE_SUB (τώρα (), διάστημα 45 λεπτών);
Όπως μπορείτε να δείτε, αυτό θα ανακτήσει όλες τις εγγραφές από το συνδέσεις πίνακα με ημερομηνία σύνδεσης μεγαλύτερη από την τρέχουσα ώρα μείον 45 λεπτά, ή με άλλα λόγια, τα τελευταία 45 λεπτά.
Λάβετε τη διαφορά μεταξύ ημερομηνιών
Μερικές φορές πρέπει να λάβετε πόση ώρα έχει περάσει μεταξύ δύο ημερομηνιών. Μπορείτε εύκολα να λάβετε τον αριθμό των ημερών μεταξύ δύο διαφορετικών ημερομηνιών με το DATEDIFF συνάρτηση, όπως η παρακάτω δήλωση SQL:
ΕΠΙΛΕΞΤΕ DATEDIFF (τώρα (), «2020-12-15»).
ο DATEDIFF Η συνάρτηση παίρνει δύο ορίσματα, και τα δύο είναι γραμματόσημα ημερομηνίας / ώρας και δίνει τον αριθμό ημερών μεταξύ τους. Το παραπάνω παράδειγμα θα δείξει τον αριθμό των ημερών που έχουν παρέλθει από τις 15 Δεκεμβρίου 2020 έως σήμερα.
Για να λάβετε τον αριθμό των δευτερολέπτων μεταξύ δύο ημερομηνιών, το TO_SECONDS () η λειτουργία μπορεί να είναι χρήσιμη, για παράδειγμα:
SELECT TO_SECONDS (τώρα ()) - TO_SECONDS ('2021-02-05 11:56:41');
Αυτό θα έχει ως αποτέλεσμα τον αριθμό των δευτερολέπτων μεταξύ των δύο παρεχόμενων ημερομηνιών.
Εξαγωγή τμημάτων από ημερομηνίες
Υπάρχουν διάφορες λειτουργίες MySQL που σας επιτρέπουν να εξαγάγετε εύκολα συγκεκριμένα τμήματα από ημερομηνίες, όπως εάν θέλετε μόνο τον μήνα, την ημέρα του έτους ή την ώρα. Ακολουθούν μερικά παραδείγματα τέτοιων λειτουργιών:
ΕΠΙΛΕΞΤΕ ΜΗΝΑ ('2021-02-11 15:27:52');
ΕΠΙΛΕΞΤΕ ΩΡΑ (τώρα ())
ΕΠΙΛΕΞΤΕ DAYOFYEAR ('2021-07-15 12:00:00').
Οι παραπάνω δηλώσεις SQL θα είχαν ως αποτέλεσμα 02, την τρέχουσα ώρα και 196 καθώς η 15η Σεπτεμβρίου είναι η 196η ημέρα του έτους. Ακολουθεί μια λίστα με όλες τις διαθέσιμες συναρτήσεις εξαγωγής ημερομηνίας, καθεμία από τις οποίες λαμβάνει μόνο ένα όρισμα, με την ημερομηνία εξαγωγής από:
- ΔΕΥΤΕΡΗ ()
- ΛΕΠΤΑ ()
- ΩΡΑ ()
- ΗΜΕΡΑ()
- ΕΒΔΟΜΑΔΑ () - Αριθμός 0 - 52 που καθορίζει την εβδομάδα εντός του έτους.
- ΜΗΝΑ ()
- QUARTER () - Αριθμός 1 - 4 που καθορίζει το τρίμηνο του έτους.
- ΕΤΟΣ ()
- DAYOFYEAR () - Η ημέρα του έτους (π.χ. 15 Σεπτεμβρίου = 196).
- LAST_DAY () - Η τελευταία ημέρα του συγκεκριμένου μήνα.
- ΗΜΕΡΟΜΗΝΙΑ () - Η ημερομηνία σε μορφή ΕΕΕΕ-ΜΜ-ΗΗ χωρίς την ώρα.
- TIME () Η ώρα σε HH: II: SS μορφή χωρίς την ημερομηνία.
- TO_DAYS () - Ο αριθμός των ημερών από τις 0 μ.μ.
- TO_SECONDS () - Ο αριθμός των δευτερολέπτων από 0 μ.Χ.
- UNIX_TIMESTAMP () - Ο αριθμός των δευτερολέπτων από την εποχή (1 Ιανουαρίου 1970)
Για παράδειγμα, εάν ίσως θέλετε να ανακτήσετε μόνο το μήνα και το έτος που δημιουργήθηκαν όλοι οι χρήστες, μπορείτε να χρησιμοποιήσετε μια δήλωση SQL όπως:
SELECT id, MONTH (create_at), YEAR (create_at) ΑΠΟ χρήστες ·
Αυτό θα ανακτήσει όλες τις εγγραφές στο χρήστες Πίνακας και εμφάνιση του αναγνωριστικού #, μήνα και έτος δημιουργίας κάθε χρήστη.
Ομαδοποίηση εγγραφών ανά περίοδο ημερομηνίας
Μια εξαιρετική χρήση των συναρτήσεων ημερομηνίας είναι η δυνατότητα ομαδοποίησης των εγγραφών κατά τη χρήση της ημερομηνίας ΟΜΑΔΑ ΑΠΟ στις δηλώσεις SQL. Για παράδειγμα, ίσως θέλετε να τραβήξετε το συνολικό ποσό όλων των παραγγελιών το 2020 ομαδοποιημένο ανά μήνα. Θα μπορούσατε να χρησιμοποιήσετε μια δήλωση SQL όπως:
SELECT MONTH (create_at), SUM (ποσό) ΑΠΟ παραγγελίες WHERE create_at ANTE '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH (create_at);
Αυτό θα ανακτήσει όλες τις παραγγελίες που υποβλήθηκαν το έτος 2020, θα τις ομαδοποιούσε κατά τον μήνα που δημιουργήθηκαν και θα επιστρέψει 12 εγγραφές που δείχνουν το συνολικό ποσό που παραγγέλθηκε κάθε μήνα του έτους.
Λάβετε υπόψη ότι, για καλύτερη απόδοση ευρετηρίου, είναι πάντα καλύτερο να αποφεύγετε τη χρήση συναρτήσεων ημερομηνίας όπως ΕΤΟΣ() εντός του όρου WHERE των δηλώσεων SQL, και αντ 'αυτού χρησιμοποιήστε το ΜΕΤΑΞΥ χειριστή όπως φαίνεται στο παραπάνω παράδειγμα.
Ποτέ μην μπερδεύεστε ξανά με ημερομηνίες
Χρησιμοποιώντας τις παραπάνω γνώσεις, μπορείτε πλέον να εργαστείτε αποτελεσματικά, να μεταφράσετε και να εκτελέσετε εργασίες σε ημερομηνίες και ώρες σε ένα ευρύ φάσμα περιπτώσεων χρήσης.
Θυμηθείτε να χρησιμοποιείτε πάντα UTC όταν εργάζεστε με ημερομηνίες για απλότητα και χρησιμοποιήστε τις παραπάνω συμβουλές για αποτελεσματική διαχείριση ημερομηνίες στο λογισμικό σας, είτε πρόκειται να ολοκληρώσετε απλούς υπολογισμούς είτε να τραβήξετε εύκολα αναφορές ομαδοποιημένες κατά ημερομηνία έμμηνα.
Εάν είστε κάπως νέοι στη SQL, φροντίστε να τα δείτε βασικές εντολές SQL για να βελτιώσετε τη χρήση του SQL.
Αυτός ο οδηγός εξετάζει τα στοιχεία μιας επαγγελματικής αναφοράς και εξετάζει τη δομή, το στυλ και την οριστικοποίηση του εγγράφου σας στο Microsoft Word.
- Απροσδιόριστος
Εγγραφείτε στο Newsletter μας
Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Ένα ακόμη βήμα…!
Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.