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