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

3 начина да получите името на месеца от дата в SQL Server (T-SQL)

Когато използвате SQL Server, имате няколко различни опции, когато трябва да върнете името на месеца от дата с помощта на T-SQL. По име на месеца не говоря за номера на месеца (като 07 ). Говоря за пълното име на месеца (като юли ).

Например, когато е дадена дата 2018-07-01 , искате юли да бъдат върнати.

Тази статия представя три начина за връщане на името на месеца от дата в SQL Server с помощта на T-SQL.

Функцията FORMAT()

FORMAT() функцията връща стойност, форматирана в посочения формат и незадължителна култура. Можете да го използвате, за да върнете името на месеца от дадена дата.

Ето един пример:

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

Резултат:

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

В този случай предоставихме низ за формат на MMMM който е персонализиран низ за формат на дата и час за връщане на името на месеца.

Хубавото на FORMAT() функцията е, че приема незадължителен аргумент, който ви позволява да посочите културата, която да използвате.

Ето няколко примера:

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

Резултат:

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

Ако не предоставите аргумента култура, се използва езикът на текущата сесия. Ако не сте сигурни какъв език използва текущата сесия, ето 3 начина да получите езика на текущата сесия. Ако установите, че трябва да промените езика, ето как да го настроите на друг език.

Можете също да използвате FORMAT() функция за получаване на съкратеното име на месеца. За да направите това, просто използвайте MMM (три M s вместо четири).

Ето пример, който връща както съкратеното име на месеца, така и пълното име на месеца:

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

Резултат:

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

Това е само един от многото начини да получите съкратеното име на месеца от дата (въпреки че този метод е може би най-добрият). Има поне още четири начина, по които можете да върнете съкратеното име на месеца от дата.

Функцията DATENAME()

DATENAME() функцията е подобна на DATEPART() функция, с изключение на това, че връща име от посочената част от датата (но само когато е приложимо име). Това означава, че връща името на деня от седмицата или името на месеца, ако това е, което ви е необходимо.

Ето как да получите името на месеца с тази функция:

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

Резултат:

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

Скаларната функция MONTHNAME() ODBC

Има ODBC скаларна функция специално за връщане на името на месеца от дата. Името му е MONTHNAME() , и става така:

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

Резултат:

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

Когато използвате ODBC скаларни функции в T-SQL, те са заобиколени от къдрави скоби ({} ) и името на функцията е с префикс fn .

Ако трябва да получите краткото име на месеца, вижте 5 начина да получите краткото име на месеца от дата в 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?

  2. Връщане на привилегии на таблица от свързан сървър в SQL Server (T-SQL примери)

  3. Възможно ли е да се използва пълнотекстово търсене (FTS) с LINQ?

  4. Как мога да извлека списък с параметри от съхранена процедура в SQL Server

  5. Как да вмъкнете данни в SQL Server