Αυτό που λατρεύω πραγματικά και μπορώ να πω είναι και ο λόγος που μου αρέσει να κάνω μάθημα είναι οι ερωτήσεις που δέχομαι από τους συμμετέχοντες. Χθες κατά την διάρκεια του σεμιναρίου που κάνω (10774 - Querying Microsoft SQL Server 2012) μία συμμετέχοντας έθεσε μια ερώτηση η οποία ήταν η εξής:
Η ερώτηση
"Θέλω σε ένα query το οποίο περιέχει ένα πεδίο ημερομηνίας, από αυτό το πεδίο να δείχνω το λεκτικό του μήνα σε όποια γλώσσα επιλέξω. Πως αυτό μπορεί να γίνει;"Η απάντηση
Η απάντηση μου ήταν άμεση καθώς από τον SQL Server 2012 και μετά έχω νέα καλούδια στην T-SQL σε συνδυασμό με το προγραμματιστικό μου παρελθόν (αν και αυτό είναι σχετικό καθώς όπως λέει η παροιμία πρώτα βγαίνει η ψυχή και μετά το χούι).
Στον SQL Server 2012 έχει προστεθεί μια CLR function γνωστή σε όλους γράφουν σε .NET και δεν είναι άλλη από την FORMAT function.
Η συγκεκριμένη function πέρα από τα standard formats μπορεί να δεχθεί και custom formats (ακριβώς όπως και στο .NET). Ακόμα μπορεί να πάρει και την γλώσσα (culture). Μπορείτε να δείτε περισσότερα για αυτή την function στα BOL στο link http://technet.microsoft.com/en-us/library/hh213505.aspx.
Έτσι με το παρακάτω query
SELECT orderid, orderdate
, FORMAT( orderdate, 'MMMM', 'en-US' ) AS englishmonth
, FORMAT( orderdate, 'MMMM', 'el-GR' ) AS greekmonth
, FORMAT( orderdate, 'MMMM', 'it-IT' ) AS italicsmonth
, FORMAT( orderdate, 'MMMM', 'es-ES' ) AS spainmonth
, FORMAT( orderdate, 'MMMM', 'zh-cn' ) AS chineesemonth<
FROM Sales.Orders;
GO
Έχω το επιθυμητό αποτέλεσμα
Enjoy it and keep Rocking with SQL Server Knowledge
/*antonch*/