sql >> Database >  >> RDS >> Sqlserver

MAAND() Voorbeelden in SQL Server (T-SQL)

In SQL Server kunt u de MONTH() . gebruiken functie om het "maand"-gedeelte van een datum te retourneren. Dit wordt geretourneerd als een geheel getal (niet de naam van de maand).

Hieronder staan ​​voorbeelden van het gebruik van deze functie.

Syntaxis

De syntaxis gaat als volgt:

MONTH ( date )

Waar date is een uitdrukking die wordt omgezet in een van de volgende gegevenstypen:

  • datum
  • datumtijd
  • datetimeoffset
  • datetime2
  • smalldatetime
  • tijd

Dit kan een kolomuitdrukking, uitdrukking, letterlijke tekenreeks of door de gebruiker gedefinieerde variabele zijn.

Voorbeeld

Hier is een eenvoudig voorbeeld van hoe het werkt:

SELECT 
   SYSDATETIME() AS 'Date',
   MONTH(SYSDATETIME()) AS 'Month';

Resultaat:

+-----------------------------+---------+
| Date                        | Month   |
|-----------------------------+---------|
| 2018-06-18 00:39:06.7954314 | 6       |
+-----------------------------+---------+

Dus de MONTH() functie was in staat om de maand te extraheren uit de datetime2 waarde (die werd geretourneerd door de SYSDATETIME() functie).

Datum opgegeven als een letterlijke tekenreeks

Hier is een voorbeeld waarbij de datum wordt opgegeven als een letterlijke tekenreeks.

SELECT MONTH('2019-01-07') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

En hier is een voorbeeld waarbij de datum in een ander formaat wordt weergegeven:

SELECT MONTH('07/01/2017') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Het is echter meestal het beste om het gebruik van datums in dergelijke indelingen te vermijden. Als u dit toch moet doen, moet u rekening houden met de taalinstellingen en/of de datumnotatie-instellingen van de huidige sessie.

Taalinstellingen

De uitvoer van het vorige voorbeeld is afhankelijk van de taalinstellingen en/of datumnotatie-instellingen van de huidige sessie.

Wanneer we de taal instellen, wordt tegelijkertijd impliciet ook het datumformaat ingesteld.

Dit is wat er gebeurt als we hetzelfde datumargument aanbieden in twee verschillende taalomgevingen.

Brits

SET LANGUAGE British;
SELECT MONTH('07/01/2017') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

us_English

SET LANGUAGE us_English;
SELECT MONTH('07/01/2017') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Instellingen voor datumnotatie

De instellingen voor datumnotatie kunnen de taalinstellingen overschrijven, dus u moet ook op de hoogte zijn van deze instelling. We kunnen bijvoorbeeld us_English . gebruiken voor onze taal (die een standaard datumnotatie heeft van mdy ), maar we zouden de datumnotatie kunnen vervangen door dmy .

Hier is een voorbeeld:

us_English – Standaard datumnotatie

Hier stellen we de taal in op us_English , waarmee impliciet de datumnotatie wordt ingesteld op mijnj .

SET LANGUAGE us_English;
SELECT MONTH('07/01/2017') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

us_English – Datumnotatie overschrijven

Hier stellen we de taal in op us_English (wat impliciet het datumformaat instelt), maar dan stellen we het datumformaat expliciet in op dmy . Dit overschrijft de datumnotatie die impliciet was ingesteld toen we de taal instelden.

SET LANGUAGE us_English;
SET DATEFORMAT dmy;
SELECT MONTH('07/01/2017') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Retourneer de naam van de maand

Als u de naam van de maand moet retourneren (in plaats van het maandnummer), raadpleegt u 3 manieren om de naam van de maand op te halen uit een datum in SQL Server.


  1. Tabel muteert, trigger/functie ziet deze mogelijk niet (om te voorkomen dat een gemiddeld cijfer onder de 2,5 daalt)

  2. SQL TUSSEN-operator voor beginners

  3. Hoe LTRIM() werkt in MariaDB

  4. Leer de basisprincipes van Java-logboekregistratie