Συνταγή SQL Date
Ημερομηνία SQL
Η πιο δύσκολη εργασία όταν επεξεργαζόμαστε ημερομηνίες είναι να διασφαλίσουμε ότι η μορφή της ημερομηνίας που εισάγουμε ταιριάζει με τη μορφή της στήλης ημερομηνίας στη βάση δεδομένων.
Αν τα δεδομένα περιέχουν μόνο μέρος ημερομηνίας, η εκτέλεση της ερώτησης δεν θα προκαλέσει προβλήματα. Αλλά, αν περιλαμβάνει και χρόνο, η κατάσταση γίνεται λίγο πιο περίπλοκη.
Πριν από την ανασκόπηση της πολυπλοκότητας των ερωτημάτων ημερομηνίας, ας δούμε τις πιο σημαντικές εσωτερικές λειτουργίες επεξεργασίας ημερομηνίας.
Λειτουργίες ημερομηνίας του MySQL
Η παρακάτω τаблицή περιλαμβάνει τις πιο σημαντικές εσωτερικές ημερομηνίες λειτουργίες του MySQL:
Λειτουργία | Περιγραφή |
---|---|
NOW() | Επιστροφή τρέχουσας ημερομηνίας και ώρας |
CURDATE() | Επιστροφή τρέχουσας ημερομηνίας |
CURTIME() | Επιστροφή τρέχουσας ώρας |
DATE() | Εξαγωγή ημερομηνίας από έκφραση ημερομηνίας/χρόνου |
EXTRACT() | Επιστροφή μοναδικών τμημάτων ημερομηνίας/χρόνου |
DATE_ADD() | Προσθήκη συγκεκριμένου χρονικού διαστήματος σε ημερομηνία |
DATE_SUB() | Αφαίρεση συγκεκριμένου χρονικού διαστήματος από ημερομηνία |
DATEDIFF() | Επιστροφή ημερών μεταξύ δύο ημερομηνιών |
DATE_FORMAT() | Παρουσίαση ημερομηνίας/χρόνου σε διαφορετικά μορφότυπα |
Λειτουργίες ημερομηνίας του SQL Server
Η παρακάτω τаблицή περιλαμβάνει τις πιο σημαντικές εσωτερικές ημερομηνίες λειτουργίες του SQL Server:
Λειτουργία | Περιγραφή |
---|---|
GETDATE() | Επιστροφή τρέχουσας ημερομηνίας και ώρας |
DATEPART() | Επιστροφή μοναδικών τμημάτων ημερομηνίας/χρόνου |
DATEADD() | Προσθήκη ή αφαίρεση συγκεκριμένου χρονικού διαστήματος από ημερομηνία |
DATEDIFF() | Επιστροφή του χρόνου μεταξύ δύο ημερομηνιών |
CONVERT() | Παρουσίαση ημερομηνίας/χρόνου σε διαφορετικά μορφότυπα |
Τύπος δεδομένων SQL Date
MySQL χρησιμοποιεί τις παρακάτω τύπους δεδομένων για την αποθήκευση ημερομηνιών ή ημερομηνίας/χρόνου στη βάση δεδομένων:
- DATE - Σύστημα YYYY-MM-DD
- DATETIME - Σύστημα: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Σύστημα: YYYY-MM-DD HH:MM:SS
- YEAR - Σύστημα YYYY ή YY
Ο SQL Server χρησιμοποιεί τα παρακάτω δεδομένα τύπους για την αποθήκευση ημερομηνιών ή ημερομηνίας/χρόνου στη βάση δεδομένων:
- DATE - Σύστημα YYYY-MM-DD
- DATETIME - Σύστημα: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - Σύστημα: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Σύστημα: Μοναδικός αριθμός
Διαχείριση Ημερομηνίας SQL
Αν δεν περιλαμβάνεται η ώρα, μπορούμε να συγκρίνουμε δύο ημερομηνίες εύκολα!
Ας υποθέσουμε ότι έχουμε την παρακάτω "Orders" τάξη:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
Τώρα, θέλουμε να επιλέξουμε τις εγγραφές με OrderDate ως "2008-12-26" από την παραπάνω τάξη.
Χρησιμοποιούμε την παρακάτω SELECT φράση:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Συλλογή αποτελεσμάτων:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
Ας υποθέσουμε ότι η "Orders" είναι όπως παρακάτω (σημειώστε την ώρα στην στήλη "OrderDate"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
Αν χρησιμοποιήσουμε την παραπάνω SELECT φράση:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Δεν μπορούμε να πάρουμε αποτελέσματα. Αυτό οφείλεται στο γεγονός ότι η ερώτηση δεν περιέχει την ώρα της ημερομηνίας.
Συμβουλή:Αν θέλετε να κάνετε την ερώτηση σας απλή και πιο εύκολα διαχειρίσιμη, μην χρησιμοποιείτε την ώρα στη ημερομηνία!