sql >> Database teknologi >  >> RDS >> Sqlserver

3 måder at få månedsnavnet fra en dato i SQL Server (T-SQL)

Når du bruger SQL Server, har du et par forskellige muligheder, når du skal returnere månedsnavnet fra en dato ved hjælp af T-SQL. Med månedsnavn taler jeg ikke om månedsnummeret (såsom 07 ). Jeg taler om månedens fulde navn (såsom juli ).

For eksempel, når der gives en dato 2018-07-01 , du vil have juli skal returneres.

Denne artikel præsenterer tre måder at returnere månedsnavnet fra en dato i SQL Server ved hjælp af T-SQL.

FORMAT()-funktionen

FORMAT() funktion returnerer en værdi formateret i det angivne format og valgfri kultur. Du kan bruge det til at returnere månedsnavnet fra en dato.

Her er et eksempel:

DECLARE @date datetime2 = '2018-07-01';
SELECT FORMAT(@date, 'MMMM') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| July     |
+----------+

I dette tilfælde leverede vi en formatstreng på MMMM som er en tilpasset dato- og tidsformatstreng til at returnere månedsnavnet.

Det gode ved FORMAT() funktion er, at den accepterer et valgfrit argument, der giver dig mulighed for at specificere den kultur, der skal bruges.

Her er nogle eksempler:

DECLARE @date datetime2 = '2018-07-01';
SELECT 
    FORMAT(@date, 'MMMM', 'en-US') AS 'en-US',
    FORMAT(@date, 'MMMM', 'es-es') AS 'es-es',
    FORMAT(@date, 'MMMM', 'de-de') AS 'de-de',
    FORMAT(@date, 'MMMM', 'zh-cn') AS 'zh-cn';

Resultat:

+---------+---------+---------+---------+
| en-US   | es-es   | de-de   | zh-cn   |
|---------+---------+---------+---------|
| July    | julio   | Juli    | 七月    |
+---------+---------+---------+---------+

Hvis du ikke angiver kulturargumentet, bruges sproget for den aktuelle session. Hvis du ikke er sikker på, hvilket sprog den aktuelle session bruger, er her 3 måder at få sproget for den aktuelle session på. Hvis du opdager, at du skal ændre sproget, kan du se her, hvordan du indstiller det til et andet sprog.

Du kan også bruge FORMAT() funktion for at få det forkortede månedsnavn. For at gøre dette skal du blot bruge MMM (tre M s i stedet for fire).

Her er et eksempel, der returnerer både det forkortede månedsnavn og det fulde månedsnavn:

DECLARE @date datetime2(0) = '2028-09-01';
SELECT 
    FORMAT(@date, 'MMM', 'en-US') 'en-US',
    FORMAT(@date, 'MMM', 'es-es') 'es-es',
    FORMAT(@date, 'MMM', 'it') 'it'
UNION ALL
SELECT 
    FORMAT(@date, 'MMMM', 'en-US'),
    FORMAT(@date, 'MMMM', 'es-es'),
    FORMAT(@date, 'MMMM', 'it');

Resultat:

+-----------+------------+-----------+
| en-US     | es-es      | it        |
|-----------+------------+-----------|
| Sep       | sep.       | set       |
| September | septiembre | settembre |
+-----------+------------+-----------+

Dette er blot en af ​​mange måder at få det forkortede månedsnavn fra en dato (selvom denne metode uden tvivl er den bedste). Der er mindst fire andre måder, hvorpå du kan returnere det forkortede månedsnavn fra en dato.

DATENAME()-funktionen

DATENAME() funktionen ligner DATEPART() funktion, bortset fra at den returnerer navnet af den angivne datodel (men kun hvor et navn er relevant). Det betyder, at den returnerer ugedagens navn eller månedens navn, hvis det er det, du har brug for.

Sådan får du månedsnavnet med denne funktion:

DECLARE @date datetime2 = '2018-07-01';
SELECT DATENAME(month, @date) AS Result;

Resultat:

+----------+
| Result   |
|----------|
| July     |
+----------+

MONTHNAME() ODBC-skalarfunktionen

Der er en ODBC-skalarfunktion specifikt til at returnere månedsnavnet fra en dato. Dens navn er MONTHNAME() , og det går sådan her:

DECLARE @date datetime2 = '2018-07-01';
SELECT {fn MONTHNAME(@date)} AS Result;

Resultat:

+----------+
| Result   |
|----------|
| July     |
+----------+

Når du bruger ODBC skalarfunktioner i T-SQL, er de omgivet af krøllede klammeparenteser ({} ), og funktionsnavnet er præfikset med fn .

Hvis du har brug for at få det korte månedsnavn, kan du se 5 måder at få det korte måneds navn på fra en dato i SQL Server.


  1. Oracle:DDL og tilbagerulning af transaktioner

  2. En oversigt over PostgreSQL Query Caching &Load Balancing

  3. Fjern eller trim første eller sidste par tegn i MySQL-databasen med SQL

  4. Hvad er formålet med at bruge OPTION(MAXDOP 1) i SQL Server?