当前位置:  开发笔记 > 数据库 > 正文

在SQL中将月号转换为月份名称函数

如何解决《在SQL中将月号转换为月份名称函数》经验,为你挑选了10个好方法。

我有几个月在SQL Server中存储为1,2,3,4,... 12.我想将它们显示为1月,2月等.在SQL Server中是否有像MonthName(1)= January这样的函数?如果可能的话,我试图避免CASE声明.



1> leoinfo..:

我认为这是得到的最好方式月份的名字时,你有一个月数

Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )

要么

Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )


为了便于阅读,我实际上会这样写:选择DateName(月,DateAdd(月,@ MononNumber - 1,'1900-01-01'))
一种可能的替代解决方案选择DateName(月,DateAdd(月,@ MonthNumber,-1))
那很完美.这应该是答案.

2> Alexander Ko..:

有点hacky但应该工作:

SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))


这是一条很好的信息,但实际上并未回答如何将月份数字转换为月份名称的问题(而是回答了如何从日期获取月份名称的问题)。您已经假设他具有datetime值,而不仅仅是月份号;为了使它起作用,您现在需要“发明”日期/时间值。认为leoinfo的解决方案更有意义
为什么'-1'?这是否需要,因为SQL Server中的月份被一个偏移?
@ DoomerDGR8它实际上是因为用于播种dateadd函数的日期从1开始.如果我们需要1月的日期名称,我们将在2008-01-01中添加1个月,这将给我们2008-02-01,这是二月.所以我们减去1来解释这一点,然后我们再次获得1月份.

3> 小智..:
SELECT DATENAME(month, GETDATE()) AS 'Month Name'



4> 小智..:
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)


我喜欢这种非常左侧的替代方式!值得深思

5> Asif..:

使用最佳方式

Select DateName( month , DateAdd( month , @MonthNumber , -1 ))



6> Saeed ur Reh..:

这很简单.

select DATENAME(month, getdate())

输出:1月


仅当您具有完整日期值而非月份整数时才有效.

7> 小智..:

您可以使用内置CONVERT功能

select CONVERT(varchar(3), Date, 100)  as Month from MyTable.

这将显示月份的前3个字符(JAN,FEB等。)



8> 小智..:

除了原创

SELECT DATENAME(m, str(2) + '/1/2011')

你可以这样做

SELECT DATENAME(m, str([column_name]) + '/1/2011')

这样,您就可以获得表中所有行的名称.其中[column_name]表示包含数值1到12的整数列

2表示任何整数,通过联系人字符串我创建了一个日期,我可以提取月份.'/ 1/2011'可以是任何日期

如果你想用变量做这个

DECLARE @integer int;

SET @integer = 6;

SELECT DATENAME(m, str(@integer) + '/1/2011')



9> unitario..:

以下适用于我:

CAST(GETDATE() AS CHAR(3))



10> 小智..:

使用此语句将“月份”数值转换为“月份名称”。

SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有