Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

MONTH() Примери в SQL Server (T-SQL)

В 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да архивирате или създадете нова таблица от съществуваща таблица на SQL Server в SQL Server - SQL Server / TSQL урок, част 105

  2. Използвайте FILE_NAME(), за да върнете логическото име на файл за даден идентификатор на файл в SQL Server

  3. Грешка при потвърждение на ръкостискане преди влизане в SQL Server

  4. Как архивирате и възстановявате база данни като копие на същия сървър?

  5. Как да предам XML от C# към съхранена процедура в SQL Server 2008?