sql >> Databáze >  >> RDS >> Sqlserver

DATENAME() Příklady v SQL Server

Na serveru SQL Server T-SQL DATENAME() funkce vrací znakový řetězec, který představuje zadanou část data zadaného data . Můžete například předat 2021-01-07 a SQL Server vrátí pouze část měsíce (January ).

Návratový typ pro DATENAME() je nvarchar .

Příklady níže.

Syntaxe

DATENAME() syntaxe vypadá takto:

DATENAME ( datepart , date )

Kde datepart je součástí date (hodnota data nebo času), pro kterou bude vrácen znakový řetězec.

Příklad 1

Zde je základní příklad, kdy vrátím komponentu měsíce z data.

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

Výsledek:

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

Příklad 2

V tomto příkladu přiřadím datum proměnné a poté použiji více instancí DATEPART() k načtení různých částí tohoto data.

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;

Výsledek:

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

Příklad 3

Můžete také načíst různé časové části z data.

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;

Výsledek:

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

Příklad 4

Můžete také načíst TZoffset a ISO_WEEK datepart.

 TZoffset se vrátí jako počet minut (podepsaný). ISO_WEEK datepart odkazuje na systém týdenního data ISO (součást normy ISO 8601), což je systém číslování týdnů.

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

Výsledek:

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

V tomto příkladu jsem nastavil datum na datetimeoffset formát, který zahrnuje posun časového pásma. TZoffset se vrátí za několik minut.

Výsledky DATENAME() bude často připomínat výsledky z DATEPART() (vzhledem k tomu, že většina částí data je číselná). Nicméně DATEPART() vrátí celé číslo na rozdíl od řetězce znaků. Proto DATEPART() vrátí měsíce (a složku dne v týdnu) v číselné podobě (např. 1 místo January ).

Získání názvu krátkého měsíce

Pokud potřebujete název měsíce, ale ve zkrácené třípísmenné zkratce (například Jan místo January ), podívejte se na můj článek 5 způsobů, jak získat krátký název měsíce z data na serveru SQL.


  1. Oracle JDBC:neplatné uživatelské jméno/heslo (ora-01017)

  2. Kdy byste použili funkci s tabulkovou hodnotou?

  3. Porovnání dočasných tabulek pro PostgreSQL a Oracle GTT

  4. Průvodce replikací MySQL Galera Cluster Streaming:Část první