Πώς να λειτουργήσετε αποτελεσματικά με ημερομηνίες και ώρες στο MySQL

Πώς να λειτουργήσετε αποτελεσματικά με ημερομηνίες και ώρες στο MySQL

Οι ημερομηνίες και οι ώρες είναι σημαντικές, βοηθούν στην οργάνωση των πραγμάτων και αποτελούν αναπόσπαστο στοιχείο κάθε λειτουργίας λογισμικού.





Η αποτελεσματική συνεργασία μαζί τους στη βάση δεδομένων μπορεί μερικές φορές να φαίνεται μπερδεμένη, είτε λειτουργεί σε διάφορες ζώνες ώρας, είτε προσθέτει / αφαιρεί ημερομηνίες και άλλες λειτουργίες.





Μάθετε τις διάφορες διαθέσιμες λειτουργίες MySQL για εύκολο χειρισμό και διαχείριση ημερομηνιών / ωρών στη βάση δεδομένων σας.





Εργασία με ζώνες ώρας

Για να διατηρήσετε την τυποποίηση των πραγμάτων, θα πρέπει να εργάζεστε μόνο με ημερομηνίες / ώρες στη ζώνη ώρας UTC. Κάθε φορά που δημιουργείτε μια σύνδεση με τη βάση δεδομένων MySQL, θα πρέπει να αλλάζετε τη ζώνη ώρας σε UTC, η οποία μπορεί να γίνει με την ακόλουθη πρόταση SQL:

SET TIME_ZONE = '+0:00'

Δεδομένου ότι όλες οι ημερομηνίες θα αποθηκευτούν τώρα στο UTC, γνωρίζετε πάντα με τι εργάζεστε, κάνοντας τα πράγματα πιο απλά και απλά.



android 7.0 μετακινήστε εφαρμογές στην κάρτα sd

Όταν είναι απαραίτητο μπορείτε εύκολα μετατρέψτε τη ζώνη ώρας οποιαδήποτε τιμή ημερομηνίας / χρονικής σήμανσης με το βολικό CONVERT_TZ () Συνάρτηση MySQL. Πρέπει πρώτα να γνωρίζετε την αντιστάθμιση, για παράδειγμα, το PST στη δυτική ακτή της Βόρειας Αμερικής είναι UTC -08: 00, ώστε να μπορείτε να χρησιμοποιήσετε:

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(now(), interval 2 week);

Αν αντίθετα θέλετε να προσθέσετε τρεις ημέρες σε μια υπάρχουσα χρονική σήμανση, θα χρησιμοποιούσατε:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

Και οι δύο συναρτήσεις λειτουργούν το ίδιο, το πρώτο όρισμα είναι η χρονική σήμανση με την οποία ξεκινάτε και το δεύτερο όρισμα είναι το διάστημα που πρέπει να προσθέσετε ή να αφαιρέσετε. Το δεύτερο όρισμα διαμορφώνεται πάντα το ίδιο ξεκινώντας από τη λέξη διάστημα ακολουθούμενη από μια αριθμητική τιμή και το ίδιο το διάστημα, το οποίο μπορεί να είναι οποιοδήποτε από τα ακόλουθα: δεύτερο, λεπτό, ώρα, ημέρα, εβδομάδα, μήνας, τρίμηνο, έτος.

Για ένα άλλο παράδειγμα, εάν θέλετε να ανακτήσετε όλες τις συνδέσεις που εμφανίστηκαν τα τελευταία 34 λεπτά, μπορείτε να χρησιμοποιήσετε μια δήλωση SQL όπως:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Όπως μπορείτε να δείτε, αυτό θα ανακτήσει όλες τις εγγραφές από το συνδέσεις πίνακα με ημερομηνία σύνδεσης μεγαλύτερη από την τρέχουσα ώρα μείον 45 λεπτά, ή με άλλα λόγια, τα τελευταία 45 λεπτά.

Λάβετε διαφορά μεταξύ ημερομηνιών

Μερικές φορές πρέπει να μάθετε πόση ώρα έχει περάσει μεταξύ δύο ημερομηνιών. Μπορείτε εύκολα να λάβετε τον αριθμό των ημερών μεταξύ δύο διαφορετικών ημερομηνιών με το DATEDIFF συνάρτησης, όπως η παρακάτω δήλωση SQL:

SELECT DATEDIFF(now(), '2020-12-15');

ο DATEDIFF Η συνάρτηση παίρνει δύο ορίσματα, και τα δύο είναι ένσημα ημερομηνίας / ώρας και δίνει τον αριθμό των ημερών μεταξύ τους. Το παραπάνω παράδειγμα θα δείξει τον αριθμό των ημερών που πέρασαν από τις 15 Δεκεμβρίου 2020 έως σήμερα.

Για να λάβετε τον αριθμό των δευτερολέπτων μεταξύ δύο ημερομηνιών, το TO_SECONDS () η λειτουργία μπορεί να είναι χρήσιμη, για παράδειγμα:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Αυτό θα έχει ως αποτέλεσμα τον αριθμό των δευτερολέπτων μεταξύ των δύο παρεχόμενων ημερομηνιών.

Εξαγωγή τμημάτων από ημερομηνίες

Υπάρχουν διάφορες λειτουργίες MySQL που σας επιτρέπουν να εξάγετε εύκολα συγκεκριμένα τμήματα από ημερομηνίες, όπως εάν θέλετε μόνο τον μήνα, την ημέρα του έτους ή την ώρα. Ακολουθούν μερικά παραδείγματα τέτοιων συναρτήσεων:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Οι παραπάνω δηλώσεις SQL θα οδηγούσαν σε 02 , η τρέχουσα ώρα, και 196 καθώς η 15η Σεπτεμβρίου είναι η 196η ημέρα του έτους. Ακολουθεί μια λίστα με όλες τις διαθέσιμες συναρτήσεις εξαγωγής ημερομηνίας, καθεμία από τις οποίες λαμβάνει μόνο ένα όρισμα, η ημερομηνία που εξάγεται από:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Για παράδειγμα, εάν θέλετε να ανακτήσετε μόνο τον μήνα και το έτος που δημιουργήθηκαν όλοι οι χρήστες, μπορείτε να χρησιμοποιήσετε μια δήλωση SQL όπως:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Αυτό θα ανακτήσει όλες τις εγγραφές εντός του χρήστες πίνακα και εμφανίστε το αναγνωριστικό#, μήνα και έτος στο οποίο δημιουργήθηκε κάθε χρήστης.

Ομαδοποίηση Εγγραφών κατά Περίοδο Ημερομηνίας

Μια εξαιρετική χρήση συναρτήσεων ημερομηνίας είναι η δυνατότητα ομαδοποίησης εγγραφών ανά περίοδο ημερομηνίας χρησιμοποιώντας ΟΜΑΔΑ ΑΠΟ μέσα στις δηλώσεις σας SQL. Για παράδειγμα, ίσως θέλετε να τραβήξετε το συνολικό ποσό όλων των παραγγελιών το 2020 ομαδοποιημένο ανά μήνα. Θα μπορούσατε να χρησιμοποιήσετε μια δήλωση SQL όπως:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Αυτό θα ανακτήσει όλες τις παραγγελίες που πραγματοποιήθηκαν το έτος 2020, θα τις ομαδοποιήσει ανά μήνα που δημιουργήθηκαν και θα επιστρέψει 12 εγγραφές που δείχνουν το συνολικό ποσό που παραγγέλθηκε κάθε μήνα του έτους.

Σημειώστε, για καλύτερη απόδοση ευρετηρίου, είναι πάντα καλύτερο να αποφεύγετε τη χρήση συναρτήσεων ημερομηνίας, όπως π.χ. ΕΤΟΣ() μέσα στη ρήτρα WHERE των δηλώσεων SQL και χρησιμοποιήστε αντί ΜΕΤΑΞΥ χειριστή όπως φαίνεται στο παραπάνω παράδειγμα.

Ποτέ μην μπερδευτείτε ξανά με ημερομηνίες

Χρησιμοποιώντας τις παραπάνω γνώσεις, μπορείτε πλέον να εργάζεστε αποτελεσματικά, να μεταφράζετε και να εκτελείτε λειτουργίες σε ημερομηνίες και ώρες σε ένα ευρύ φάσμα περιπτώσεων χρήσης.

Θυμηθείτε να χρησιμοποιείτε πάντα το UTC όταν εργάζεστε με ημερομηνίες για λόγους απλότητας και να χρησιμοποιείτε τις παραπάνω συμβουλές για την αποτελεσματική διαχείριση ημερομηνιών στο λογισμικό σας, είτε πρόκειται για την ολοκλήρωση απλών υπολογισμών είτε για την εύκολη άντληση αναφορών ομαδοποιημένων κατά περιόδους ημερομηνιών.

Εάν είστε κάπως νέοι στο SQL, φροντίστε να τα δείτε βασικές εντολές SQL για να βελτιώσετε τη χρήση της SQL.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Πώς να δημιουργήσετε επαγγελματικές αναφορές και έγγραφα στο Microsoft Word

Αυτός ο οδηγός εξετάζει τα στοιχεία μιας επαγγελματικής έκθεσης και εξετάζει τη δομή, τη διαμόρφωση και την οριστικοποίηση του εγγράφου σας στο Microsoft Word.

Διαβάστε Επόμενο
Σχετικά θέματα Σχετικά με τον Συγγραφέα Ματ Ντιζάκ(Δημοσιεύθηκαν 18 άρθρα) Περισσότερα από τον Matt Dizak

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή