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

Преобразуване на номер на месец в името на месеца в SQL Server (T-SQL)

Можете да използвате T-SQL кода по-долу, за да преобразувате номер на месец в съответното му име в SQL Server.

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

Пример

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

Ето пример, който използва месец 10 (октомври):

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

Резултат:

October

Обяснение на кода

Ако се чудите защо има -1 в горния код, защото основната дата е 1900-01-01 (добре, 1900-01-01 00:00:00.000 за да бъдем точни).

Ако добавим 10 към 01, тогава получаваме 11, което е ноември (грешен месец). Следователно трябва да го извадим с 1.

Следният пример трябва да илюстрира това по-добре от думите ми. Ето различни DATEADD() стойности, които се връщат, в зависимост от това какво използвам като трети аргумент.

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

Резултат:

 +-------------------------+-------------------------+-------------------------+
 | 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 |
 +-------------------------+-------------------------+-------------------------+ 

Така че третата опция ни дава правилния номер на месеца и тогава е лесно да използвате DATENAME() за да го преобразувате в името на месеца.

Алтернатива:FORMAT()

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

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

Резултат:

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. Как мога да вмъкна данни в SQL Server с помощта на VBNet

  2. Разбиране на функцията за защита на SQL Server HAS_Permis_BY_Name и нейните случаи на употреба

  3. Как да конвертирате разделен със запетая списък в редове в SQL Server

  4. Какво SqlDbType се съпоставя с varBinary(max)?

  5. Създаване на таблица на SQL Server от таблица с данни на C#