SQL Serverissä T-SQL DATENAME()
-funktio palauttaa merkkijonon, joka edustaa määritetyn päivämäärän määritettyä päivämääräosaa. Voit esimerkiksi syöttää 2021-01-07
ja saada SQL Serverin palauttamaan vain kuukauden osan (January
).
Toiminnon DATENAME()
palautustyyppi on nvarchar.
Alhaalla on esimerkkejä.
Syntaksi
Syntaksi DATENAME()
menee näin:
DATENAME ( datepart , date )
Jossa datepart
on se osa date
:stä (päivämäärän tai kellonajan arvo), josta palautetaan merkkijono.
Esimerkki 1
Tässä on perusesimerkki, jossa palautan päivämäärän kuukauden osan.
SELECT DATENAME(month, '2021-01-07') AS Result;
Tulos:
+----------+| Result ||----------|| January |+----------+
Esimerkki 2
Tässä esimerkissä määrittelen päivämäärän muuttujaan, sitten käytän useita DATEPART()
-instansseja DATEPART()
hakiessani päivämäärän eri osia.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;
Tulos:
+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+
Esimerkki 3
Voit myös hakea päivämäärän eri aikaosat.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;
Tulos:
+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+
Esimerkki 4
Voit hakea myös päivämäärän TZoffset
– ja ISO_WEEK
-osat.
Esimerkki 4
Esimerkki 4
Tulos:
+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+
Esimerkki 4
Voit hakea myös päivämäärän TZoffset
– ja ISO_WEEK
-osat. ISO_WEEK
-päivämääräosa viittaa ISO-viikkopäivämääräjärjestelmään (osa ISO 8601-standardia), joka on viikkojen numerointijärjestelmä.
DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';
Tulos:
+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+
Tässä esimerkissä asetin päivämäärän muotoon datetimeoffset
, joka sisältää aikavyöhykeoffsetin. TZoffset
palautetaan minuutteina.
DATENAME()
:n tulokset muistuttavat usein DATEPART()
:n tuloksia (koska useimmat päivämäärän osat ovat numeerisia). DATEPART()
palauttaa kuitenkin kokonaisluvun merkkijonon sijaan. Siksi DATEPART()
palauttaa kuukaudet (ja arkipäivän osan) numeerisessa muodossa (esim. 1
eikä January
).
Lyhyen kuukauden nimen saaminen
Jos tarvitset kuukauden nimen, mutta lyhennetyssä, kolmikirjaimisessa lyhennemuodossaan (esimerkiksi Jan
eikä January
), tutustu artikkeliini 5 tapaa saada lyhyt kuukauden nimi päivämäärältä SQL Serverissä.