A T-SQL DATENAME() funkció az SQL Serverben egy olyan karakterláncot ad vissza, amely a megadott dátum megadott dátumrészét jelöli. Például megadhatja a 2021-01-07 értéket, és az SQL Server csak a hónap részét (January) adja vissza.

A DATENAME() visszatérési típusa nvarchar.

Az alábbi példák.

Szintaxis

A DATENAME() szintaxis így néz ki:

DATENAME ( datepart , date )

Hol datepart a date (dátum vagy időérték) azon része, amelyre karakterláncot ad vissza.

Példa 1

Itt egy alapvető példa, ahol egy dátumból a hónapkomponenst adom vissza.

SELECT DATENAME(month, '2021-01-07') AS Result;

Eredmény:

+----------+| Result ||----------|| January |+----------+

Példa 2

Ebben a példában egy dátumot rendelek egy változóhoz, majd a DATEPART() több példányát használom a dátum különböző részeinek kinyerésére.

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;

Eredmény:

+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+

3. példa

A dátumból a különböző időbeli részeket is kinyerhetjük.

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;

Eredmény:

+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+

4. példa

Az TZoffset és az ISO_WEEK dátumrészt is lekérdezheti.

A TZoffset a percek számaként (aláírva) kerül vissza. Az ISO_WEEK datepart az ISO week-date rendszerre utal (az ISO 8601 szabvány része), amely a hetek számozási rendszere.

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';

Eredmény:

+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+

Ebben a példában a dátumot datetimeoffset formátumra állítottam be, amely tartalmazza az időzóna eltolást. A TZoffset percben kapjuk vissza.

A DATENAME() eredményei gyakran hasonlítani fognak a DATEPART() eredményeihez (mivel a legtöbb dátumrész numerikus). A DATEPART() azonban egész számot ad vissza, nem pedig karakterláncot. Ezért a DATEPART() a hónapokat (és a hétköznap komponenst) numerikus formában adja vissza (pl. 1 a January helyett).

A hónap rövid nevének megadása

Ha a hónap nevére van szüksége, de annak rövidített, 3 betűs rövidített formájában (pl. Jan a January helyett), olvassa el az 5 módszer a hónap rövid nevének megadására egy dátumból az SQL Serverben című cikkemet.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.