sql >> Databáze >  >> RDS >> Sqlserver

3 způsoby, jak získat název měsíce z data v SQL Server (T-SQL)

Když používáte SQL Server, máte několik různých možností, když potřebujete vrátit název měsíce z data pomocí T-SQL. U názvu měsíce nemluvím o čísle měsíce (například 07 ). Mám na mysli celý název měsíce (například červenec ).

Pokud je například uvedeno datum 01.07.2018 , chcete červenec k vrácení.

Tento článek představuje tři způsoby, jak vrátit název měsíce z data v SQL Server pomocí T-SQL.

Funkce FORMAT()

FORMAT() funkce vrací hodnotu naformátovanou v zadaném formátu a volitelné jazykové verzi. Můžete jej použít k vrácení názvu měsíce z data.

Zde je příklad:

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

Výsledek:

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

V tomto případě jsme poskytli formátovací řetězec MMMM což je vlastní řetězec formátu data a času pro vrácení názvu měsíce.

Dobrá věc na FORMAT() funkce spočívá v tom, že přijímá volitelný argument, který vám umožňuje určit kulturu, která se má použít.

Zde je několik příkladů:

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';

Výsledek:

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

Pokud argument kultury neuvedete, použije se jazyk aktuální relace. Pokud si nejste jisti, jaký jazyk aktuální relace používá, zde jsou 3 způsoby, jak získat jazyk aktuální relace. Pokud zjistíte, že potřebujete změnit jazyk, zde je návod, jak jej nastavit na jiný jazyk.

Můžete také použít FORMAT() funkce pro získání zkráceného názvu měsíce. Chcete-li to provést, jednoduše použijte MMM (tři M s místo čtyř).

Zde je příklad, který vrací jak zkrácený název měsíce, tak celý název měsíce:

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');

Výsledek:

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

Toto je jen jeden z mnoha způsobů, jak získat zkrácený název měsíce z data (ačkoli tato metoda je pravděpodobně nejlepší). Existují alespoň čtyři další způsoby, jak můžete vrátit zkrácený název měsíce z data.

Funkce DATENAME()

DATENAME() funkce je podobná funkci DATEPART() funkce, kromě toho, že vrací jméno zadané části data (ale pouze tam, kde je použitelný název). To znamená, že vrátí název dne v týdnu nebo název měsíce, pokud to požadujete.

Zde je návod, jak získat název měsíce pomocí této funkce:

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

Výsledek:

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

Skalární funkce ODBC MONTHNAME()

Existuje skalární funkce ODBC speciálně pro vrácení názvu měsíce z data. Jeho název je MONTHNAME() , a vypadá to takto:

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

Výsledek:

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

Při použití skalárních funkcí ODBC v T-SQL jsou ohraničeny složenými závorkami ({} ) a název funkce má předponu fn .

Pokud potřebujete získat krátký název měsíce, přečtěte si článek 5 způsobů, jak získat krátký název měsíce z data na serveru SQL.


  1. Co je MySQL ekvivalentem PostgreSQL EXPLAIN ANALYZE

  2. VBA Alchymie:Přeměna metod na vlastnosti

  3. Potíže se znaky UTF-8; co vidím, není to, co jsem uložil

  4. Je možné vynutit zamykání na úrovni řádků v SQL Server?