Преобразование номера месяца в функцию имени месяца в SQL - PullRequest
196 голосов
/ 09 октября 2008

В SQL Server месяцы хранятся как 1,2,3,4, ... 12. Я хотел бы отобразить их как январь, февраль и т. Д. Есть ли в SQL Server такая функция, как MonthName (1) = январь? Я пытаюсь избежать заявления CASE, если это возможно.

Ответы [ 31 ]

1 голос
/ 28 апреля 2016
SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
1 голос
/ 14 декабря 2013

работает на меня

SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
1 голос
/ 14 декабря 2013
select monthname(curdate());

OR

select monthname('2013-12-12');
1 голос
/ 20 июля 2012
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )

Explaination:

  1. Первая переменная декалира MonthNumber
  2. Получить текущий месяц для DatePart, который возвращает номер месяца
  3. Название месяца возврата третьего запроса
0 голосов

Самый простой способ - вызвать функцию MONTHNAME(your_date). your_date может быть статическим значением или значением из одного из полей таблицы.

0 голосов
/ 16 ноября 2018

Вы можете создать такую ​​функцию, чтобы сгенерировать месяц и сделать ВЫБЕРИТЕ dbo.fn_GetMonthFromDate (date_column) в качестве Месяца ОТ имени таблицы


/****** Object:  UserDefinedFunction [dbo].[fn_GetMonthFromDate]    Script Date: 11/16/2018 10:26:33 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[fn_GetMonthFromDate] 
(@date datetime)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @monthPart int</p>

SET @monthPart = MONTH(@date)

IF @monthPart = 1
    BEGIN
        RETURN 'January'
    END
ELSE IF @monthPart = 2
    BEGIN
        RETURN 'February'
    END
ELSE IF @monthPart = 3
    BEGIN
        RETURN 'March'
    END
ELSE IF @monthPart = 4
    BEGIN
        RETURN 'April'
    END
ELSE IF @monthPart = 5
    BEGIN
        RETURN 'May'
    END
ELSE IF @monthPart = 6
    BEGIN
        RETURN 'June'
    END
ELSE IF @monthPart = 7
    BEGIN
        RETURN 'July'
    END
ELSE IF @monthPart = 8
    BEGIN
        RETURN 'August'
    END
ELSE IF @monthPart = 9
    BEGIN
        RETURN 'September'
    END
ELSE IF @monthPart = 10
    BEGIN
        RETURN 'October'
    END
ELSE IF @monthPart = 11
    BEGIN
        RETURN 'November'
    END
ELSE IF @monthPart = 12
    BEGIN
        RETURN 'December'
    END
RETURN NULL END
0 голосов
/ 17 декабря 2016

Нет системной функции на сервере SQL. Но вы можете создать свою собственную пользовательскую функцию - скалярную функцию. Вы найдете скалярные функции в обозревателе объектов для вашей базы данных: Программируемость-> Функции-> Скалярные функции Ниже я использую переменную таблицы, чтобы собрать все вместе.

--Create the user-defined function
CREATE FUNCTION getmonth (@num int)
RETURNS varchar(9) --since 'September' is the longest string, length 9
AS
BEGIN

DECLARE @intMonth Table (num int PRIMARY KEY IDENTITY(1,1), month varchar(9))

INSERT INTO @intMonth VALUES ('January'), ('February'), ('March'), ('April'), ('May')
                           , ('June'), ('July'), ('August') ,('September'), ('October')
                           , ('November'), ('December')

RETURN (SELECT I.month
        FROM @intMonth I
        WHERE I.num = @num)
END
GO

--Use the function for various months
SELECT dbo.getmonth(4) AS [Month]
SELECT dbo.getmonth(5) AS [Month]
SELECT dbo.getmonth(6) AS [Month]
0 голосов
/ 24 июня 2015

Вот мое решение, использующее некоторую информацию от других для решения проблемы.

datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
0 голосов
/ 04 июня 2015

Используйте это утверждение для получения названия месяца:

DECLARE @date datetime
SET @date='2015/1/4 00:00:00'

SELECT CAST(DATENAME(month,@date )  AS CHAR(3))AS 'Month Name'

Это даст вам краткое название месяца. Как это: январь, февраль, мар и т. Д.

0 голосов
/ 28 сентября 2011

Используйте это утверждение

SELECT TO_CHAR(current_date,'dd MONTH yyyy') FROM dual

это преобразует номер месяца в полную строку месяца

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...