Na serveru SQL Server T-SQL DATEPART() funkce vrátí celé číslo, 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 roku (2021 ).
Můžete také extrahovat časovou část. Můžete například předat 2018-06-02 08:24:14.3112042 a SQL Server vrátí pouze hodinovou část (8 ).
Příklady níže.
Syntaxe
Za prvé, syntaxe. DATEPART() syntaxe vypadá takto:
DATEPART ( datepart , date )
Kde datepart je součástí date (hodnota data nebo času), pro které bude vráceno celé číslo.
Příklad 1
Zde je základní příklad, kdy vrátím komponentu roku z data.
SELECT DATEPART(year, '2021-01-07') AS Result;
Výsledek:
+----------+ | Result | |----------| | 2021 | +----------+
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
DATEPART(year, @date) AS Year,
DATEPART(quarter, @date) AS Quarter,
DATEPART(month, @date) AS Month,
DATEPART(dayofyear, @date) AS 'Day of Year',
DATEPART(day, @date) AS Day,
DATEPART(week, @date) AS Week,
DATEPART(weekday, @date) AS Weekday; Výsledek:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | 6 | 153 | 2 | 22 | 7 | +--------+-----------+---------+---------------+-------+--------+-----------+
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
DATEPART(hour, @date) AS Hour,
DATEPART(minute, @date) AS Minute,
DATEPART(second, @date) AS Second,
DATEPART(millisecond, @date) AS Millsecond,
DATEPART(microsecond, @date) AS Microsecond,
DATEPART(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
DATEPART(TZoffset, @date) AS 'Time Zone Offset',
DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK'; Výsledek:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | 480 | 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.
Rychlá alternativa
T-SQL také nabízí stručnější způsob, jak vrátit komponenty dne, měsíce nebo roku z data pomocí DAY() , MONTH() a YEAR() funkce.
Fungují takto:
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT
DAY(@date) AS DAY,
MONTH(@date) AS MONTH,
YEAR(@date) AS YEAR;
Výsledek:
+-------+---------+--------+ | DAY | MONTH | YEAR | |-------+---------+--------| | 2 | 6 | 2018 | +-------+---------+--------+
Získání názvu měsíce nebo názvu dne
Pokud potřebujete získat název měsíce nebo dne, použijte DATENAME() místo toho funkci. Tato funkce vrací výsledky jako znakový řetězec a podle názvu můžete vrátit měsíc a den v týdnu. Zde jsou nějaké DATENAME() příklady, které demonstrují, co mám na mysli.