Λοιπόν επειδή λογικά κάποιοι οι οποίοι τώρα ξεκινάτε να ασχολείστε με SQL Server, θα έχετε την απορία για πως μπορείτε να καταχωρήστε σε
datetime πεδίο, ενα date σε ελληνικό format (dd/mm/yyy) και όχι στο international(yyyy/mm/dd) ή στο αμερικάνικο (mm/dd/yyy).
Η αλήθεια είναι ότι απο default ο SQL SERVER δέχεται σαν φορμάτ μόνο το αμερικάνικο ή το international.Οποιαδήποτε άλλη προσπάθεια να κανέτε καταχώρηση ημερομηνίας σε ελληνικό φορμάτ, καταλήγει σε error.
Πx. Το παρακάτω, βγάζει error:
DECLARE @tDate AS datetime;
SET @tDate = '31/12/2006';
SELECT @tDate;The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.Υπάρχουν μερικοί τρόποι τους οποίους αναλύω παρακάτω.
Α) Μπορείτε να κάνετε set την var
DATEFORMAT του SQL Server σε όποιο format θέλετε εσείς
Πχ.
SET DATEFORMAT dmy;
DECLARE @tDate AS datetime;
SET @tDate = '31/12/2006';
SELECT @tDate;O παραπάνω κώδικας θα επιστρέψει αποτέλεσμα χωρίς λάθος, κάτι το οποίο σημαίνει οτι ακόμα και αν το query μας ήτανε
INSERT και όχι
SELECT ,ο SQL Server θα το δεχόταν ως
valid date format.
Ένας άλλος τρόπος είναι να αλλάξουνε το language setting του SQL Server.
Πχ.
SET LANGUAGE Greek;
DECLARE @tDate AS datetime;
SET @tDate = '31/12/2006';
SELECT @tDate;Τα settings αυτά είναι runtime κάτι το οποίο σημαίνει οτι εάν γίνει restart ο SQL Server, αυτά χάνονται.
Όμως, αν παρατηρήσετε, το OUTPUT format του date εξακολουθεί να είναι σε international format.
Πώς μπορείτε να πάρετε την ημερομηνία σε μορφή dd/mm/yyyy?Πολύ εύκολα!
Αν χρησιμοποιήσετε την
DATEPART, μπορείτε να κάνετε format την ημερομηνία.
Πχ.
SET DATEFORMAT dmy;
DECLARE @tDate AS datetime;
SET @tDate = '31/12/2006';
SELECT DATEPART(dd,@tDate),DATEPART(mm,@tDate),DATEPART(yy,@tDate);Αυτό θα επιστρέψει:
--- --- ---
31 12 2006
Επίσης ένας άλλος τρόπος είναι να χρησιμοποιήσετε της functions
DAY,
MONTH και
YEAR:
SET DATEFORMAT dmy;
DECLARE @tDate AS datetime;
SET @tDate = '31/12/2006';
SELECT DAY(@tDate),MONTH(@tDate),YEAR(@tDate);Στην κυριολεξία η functions
DAY,
MONTH και
YEAR είναι aliases των
DATEPART(dd,datevar),
DATEPART(mm,datevar) και
DATEPART(yy,datevar) αντίστοιχα.
Αυτά τα λίγα απο μένα..
Παρακαλώ αν υπάρχουν άλλοι τρόποι, να τους αναφέρετε για να τους προσθέσω..
Επίσης εάν έχω κάπου λάθος, παρακαλώ διορθώστε με!
Παναγιώτης Κεφαλίδης
"Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους
όρους χρήσης.