如何将日期月份从int转换为varchar?

时间:2012-02-15 09:22:26

标签: sql-server sql-server-2005 datetime date

我想问一下如何在sql server 2005中将整数转换为月份名称。示例我的字段是01-12,我想显示为1月到12月。

任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:2)

SELECT MonthName =
  CASE month
     WHEN 1 THEN 'January'
     WHEN 2 THEN 'February'
     WHEN 3 THEN 'March'
     WHEN 4 THEN 'April'
     WHEN 5 THEN 'May'
     WHEN 6 THEN 'June'
     WHEN 7 THEN 'July'
     WHEN 8 THEN 'August'
     WHEN 9 THEN 'September'
     WHEN 10 THEN 'October'
     WHEN 11 THEN 'November'
     WHEN 12 THEN 'December'
     ELSE 'What kind of calendar is it?'
  END

另见:

答案 1 :(得分:1)

在C#中我们可以使用 对于月份的全名,如1月至12月

  

Date.ToString( “MMMM”)

对于jan-dec你可以使用

  

Date.ToString( “MMM”)

答案 2 :(得分:1)

要在Sql的存储过程中使用,你可以使用这个

  

SELECT DATENAME(月,DATEADD(月,@ mydate-1,CAST('2008-01-01'AS   日期时间)))

其中@mydate可以是1,2,3 ...

答案 3 :(得分:0)

这样,你创建一个标量函数..

CREATE FUNCTION dbo.ConvertMonthName
(
    -- Add the parameters for the function here
    @m      nvarchar(2)
)
RETURNS varchar(20)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @result varchar(20)

    DECLARE @MNO INT
    SET @MNO = CAST(@M AS INT)

    -- Add the T-SQL statements to compute the return value here
    if(@m = 1)
        SET @result = 'JANUARY'
    else if(@m = 2)
        SET @result = 'FEBRUARY'
    else if(@m = 3)
        SET @result = 'MARCH'
    else if(@m = 4)
        SET @result = 'APRIL'
    else if(@m = 5)
        SET @result = 'MAY'
    else if(@m = 6)
        SET @result = 'JUNE'
    else if(@m = 7)
        SET @result = 'JULY'
    else if(@m = 8)
        SET @result = 'AUGUST'
    else if(@m = 9)
        SET @result = 'SEPTEMBER'
    else if(@m = 10)
        SET @result = 'OCTOBER'
    else if(@m = 11)
        SET @result = 'NOVEMBER'
    else if(@m = 12)
        SET @result = 'DECEMBER'



    RETURN @result

END

- 来自你的sql脚本

DECLARE @VAR VARCHAR(5)
SET @VAR = '01-12'

SELECT dbo.ConvertMonthName(LEFT(@VAR,2)) + ' - ' + dbo.ConvertMonthName(RIGHT(@VAR,2)) [colname]

答案 4 :(得分:0)

我不确定你对其他答案不喜欢什么(“我更喜欢动态代码”是什么意思?)但是由于你使用的是数据库,最简单的解决方案是将名称存储在表格中。如果您想支持多种语言的月份名称,那么您将来可以轻松添加更多列。

如果您使用日期做了大量工作,那么最好的解决方案就是创建一个完整的calendar table(您可以在此网站上找到关于它们的大量讨论),因为这样您就可以存储多个名称或其他名称您可以根据需要使用特定日期的属性而不使用任何代码。

答案 5 :(得分:0)

CREATE FUNCTION dbo.[MonthName] (@monthNum int)
    RETURNS varchar(30)
AS
BEGIN
    RETURN
        CASE WHEN @monthNum BETWEEN 1 AND 12
            THEN DATENAME(MONTH, DATEADD(MONTH, @monthNum, '2000-12-01'))
            ELSE NULL
        END
END