Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwertuj numer miesiąca na nazwę miesiąca w programie SQL Server (T-SQL)

Możesz użyć poniższego kodu T-SQL, aby przekonwertować numer miesiąca na odpowiadającą mu nazwę w SQL Server.

Dotyczy to czasów, w których tak naprawdę nie masz pełnej daty – kiedy wszystko, co masz, to numer miesiąca. Jeśli tak masz datę, oto jak uzyskać nazwę miesiąca z daty.

Przykład

Możesz uzyskać nazwę miesiąca z odpowiadającego mu numeru, używając DATENAME() funkcja w połączeniu z DATEADD() .

Oto przykład z 10 miesiącem (październik):

SELECT DATENAME( 
    month, 
    DATEADD( month , 10, -1 )
    );

Wynik:

October

Wyjaśnienie Kodeksu

Jeśli zastanawiasz się, dlaczego istnieje -1 w powyższym kodzie, to dlatego, że data bazowa to 1900-01-01 (no cóż, 1900-01-01 00:00:00.000 żeby być dokładnym).

Jeśli dodamy 10 do 01, otrzymamy 11, czyli listopad (niewłaściwy miesiąc). Dlatego musimy ją odjąć przez 1.

Poniższy przykład powinien to zilustrować lepiej niż moje słowa. Oto różne DATEADD() wartości, które są zwracane, w zależności od tego, czego używam jako trzeciego argumentu.

SELECT 
  DATEADD( month, 0, 0 ) AS [Base Date],
  DATEADD( month, 10, 0 ) AS [Add 10],
  DATEADD( month, 10, -1 ) AS [Subtract 1];

Wynik:

 +-------------------------+-------------------------+-------------------------+
 | Base Date               | Add 10                  | Subtract 1              |
 |-------------------------+-------------------------+-------------------------|
 | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 |
 +-------------------------+-------------------------+-------------------------+ 

Tak więc trzecia opcja daje nam poprawny numer miesiąca, a następnie wystarczy użyć DATENAME() aby przekonwertować go na nazwę miesiąca.

Alternatywna:FORMAT()

Jeśli nie podoba Ci się DATENAME() funkcji, możesz zamienić ją na FORMAT() funkcja zamiast. Obowiązuje ta sama koncepcja.

SELECT FORMAT( 
    DATEADD( month , 10, -1 ),
    'MMMM'
    );

Wynik:

October

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwiązywanie problemów z replikacją transakcyjną programu SQL Server

  2. Jak przechwytywać i analizować zdarzenia SQL Server

  3. Użyj instrukcji Create, aby utworzyć tabelę w SQL Server — SQL Server / T-SQL Tutorial, część 34

  4. TSQL:Jak przekonwertować czas lokalny na UTC? (Serwer SQL 2008)

  5. Funkcje ciągów SQL Server (pełna lista)