Понякога, когато работите със SQL Server (или всяка друга СУБД по този въпрос), трябва да върнете краткото име за един месец. Под това имам предвид съкращението от 3 букви на месец. Например, имате нужда от „Dec“ вместо „December“.
Ето четири начина, по които можете да извлечете съкратеното име на месеца от дата в SQL Server.
Функцията FORMAT()
FORMAT()
функцията е налична от SQL Server 2012 г. и това е най-краткият начин за връщане на месеца като съкращение от 3 букви.
Ето пример за това как работи:
DECLARE @date datetime2 = '2000-01-01'; SELECT FORMAT(@date, 'MMM') AS 'FORMAT';
Резултат:
FORMAT ------ Jan
Първият ред просто декларира променлива и й присвоява дата. Вторият ред е мястото, където връщаме краткото име на месеца от датата.
Функциите CAST() и DATENAME()
Тази опция прехвърля датата като CHAR(3)
, като по този начин отрязва всички знаци, които следват първите три.
Ето един пример:
DECLARE @date datetime2 = '2000-01-01'; SELECT CAST(DATENAME(month, @date) AS CHAR(3)) AS 'CAST/DATENAME';
Резултат:
CAST/DATENAME ------------- Jan
Функциите LEFT() и DATENAME()
Тази опция е подобна на предишната, с изключение на това, че използва LEFT()
функция, за да вземете 3-те най-леви знака от датата.
Пример:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(DATENAME(month, @date), 3) AS 'LEFT/DATENAME';
Резултат:
LEFT/DATENAME ------------- Jan
Функциите LEFT() и CONVERT()
Тази опция преобразува датата в varchar, след което приема първите три знака.
Пример:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(CONVERT(varchar, @date, 100), 3) AS 'LEFT/CONVERT';
Резултат:
LEFT/CONVERT ------------ Jan
В този пример 100
аргумент стилизира датата, така че да е в следния формат:mon dd yyyy hh:miAM (или PM) . Така че в нашия случай датата е оформена като 1 януари 2000 г. 12:00 ч. .
Оттам нататък е просто въпрос на отрязване на първите три букви с LEFT()
функция.
Функциите LEFT() и MONTHNAME()
Тази опция използва MONTHNAME()
ODBC скаларна функция за връщане на името на месеца. И както при предишните два примера, ние просто извличаме първите три букви от името на този месец.
Пример:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT({fn MONTHNAME(@date)}, 3) AS 'LEFT/MONTHNAME';
Резултат:
LEFT/MONTHNAME -------------- Jan