В SQL Server можете да използвате MONTH()
функция за връщане на частта „месец“ на дата. Това се връща като цяло число (не името на месеца).
По-долу са дадени примери за това как да използвате тази функция.
Синтаксис
Синтаксисът е така:
MONTH ( date )
Където date
е израз, който се разрешава до един от следните типове данни:
- дата
- дата и час
- datetimeoffset
- datetime2
- smalldatetime
- време
Това може да бъде израз на колона, израз, низов литерал или променлива, дефинирана от потребителя.
Пример
Ето основен пример за това как работи:
SELECT SYSDATETIME() AS 'Date', MONTH(SYSDATETIME()) AS 'Month';
Резултат:
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Така че MONTH()
функцията успя да извлече месеца от datetime2 стойност (която е върната от SYSDATETIME()
функция).
Дата е предоставена като низов литерал
Ето пример, при който датата е предоставена като низов литерал.
SELECT MONTH('2019-01-07') AS Result;
Резултат:
+----------+ | Result | |----------| | 1 | +----------+
И ето пример, при който датата е предоставена в различен формат:
SELECT MONTH('07/01/2017') AS Result;
Резултат:
+----------+ | Result | |----------| | 7 | +----------+
Въпреки това, обикновено е най-добре да избягвате използването на дати в такива формати. Ако трябва да го направите, ще трябва да имате предвид езиковите настройки и/или настройките за формата на датата на текущата сесия.
Езикови настройки
Резултатът от предишния пример ще зависи от настройките за език и/или формат на датата на текущата сесия.
Когато задаваме езика, форматът на датата се задава имплицитно в същото време.
Ето какво се случва, когато предоставим един и същ аргумент за дата в две различни езикови среди.
Британски
SET LANGUAGE British; SELECT MONTH('07/01/2017') AS Result;
Резултат:
+----------+ | Result | |----------| | 1 | +----------+
нас_английски
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Резултат:
+----------+ | Result | |----------| | 7 | +----------+
Настройки за формата на датата
Настройките за формат на датата могат да заменят езиковите настройки, така че вие също трябва да сте наясно с тази настройка. Например, може да използваме us_English за нашия език (който има формат за дата по подразбиране mdy ), но бихме могли да заменим формата на датата да бъде dmy .
Ето един пример:
us_English – Формат на датата по подразбиране
Тук задаваме езика на us_English , което имплицитно задава формата на датата на myy .
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Резултат:
+----------+ | Result | |----------| | 7 | +----------+
us_English – Отмяна на формата на датата
Тук задаваме езика на us_English (което имплицитно задава формата на датата), но след това изрично задаваме формата на датата на dmy . Това отменя формата на датата, който беше зададен имплицитно, когато задавахме езика.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Резултат:
+----------+ | Result | |----------| | 1 | +----------+
Върнете името на месеца
Ако трябва да върнете името на месеца (за разлика от номера на месеца), вижте 3 начина да получите името на месеца от дата в SQL Server.