我将月份存储在SQL Server中为1,2,3,4,…12。我想把它们显示为一月,二月等。在SQL Server中有一个函数像MonthName(1) = 1月?如果可能的话,我尽量避免使用CASE语句。
当前回答
只要用今天的日期减去当前的月份,然后再加上你的月份。然后使用datename函数在一行中给出完整的名称。
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
其他回答
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
从SQL Server 2012开始,你可以使用FORMAT和DATEFROMPARTS来解决这个问题。(如果您想要来自其他文化的月份名称,请更改:en-US)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
如果你想要一个三个字母的月:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
如果你真的想,你可以为它创建一个函数:
CREATE FUNCTION fn_month_num_to_name
(
@month_num tinyint
)
RETURNS varchar(20)
AS
BEGIN
RETURN FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
END
要将月号转换为月名,请尝试以下步骤
declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))
我认为这是当你有月份号时,获得月份名称的最好方法
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Or
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
下面是我利用别人的信息来解决问题的方法。
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
推荐文章
- 有人可以对SQL查询进行版权保护吗?
- 如何知道MySQL表最近一次更新?
- 如何转储一些SQLite3表的数据?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?
- 在MySQL中的一个查询中更新多个具有不同值的行
- 在SQL中更新多个列
- 如何删除表中特定列的第一个字符?
- MySQL OR与IN性能
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- GROUP BY with MAX(DATE)
- 删除id与其他表不匹配的sql行
- 等价的限制和偏移SQL Server?
- 如何从SQL Server中的字符串中剥离所有非字母字符?
- 为什么我不能在DELETE语句中使用别名?