我将月份存储在SQL Server中为1,2,3,4,…12。我想把它们显示为一月,二月等。在SQL Server中有一个函数像MonthName(1) = 1月?如果可能的话,我尽量避免使用CASE语句。
当前回答
使用此语句将月份数值转换为月份名称。
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
其他回答
您可以创建一个这样的函数来生成Month和do SELECT dbo.fn_GetMonthFromDate(date_column)作为月份FROM table_name /******对象:UserDefinedFunction [dbo]。[fn_GetMonthFromDate]脚本日期:11/16/2018 10:26:33 AM ******/ 设置ansi_nulls为on 去 设置quoted_identifier为on 去 CREATE FUNCTION [dbo].[fn_GetMonthFromDate] (@date datetime) 返回varchar (50) 作为 开始 声明@monthPart int
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 ENDto_char(to_date(V_MONTH_NUM,'MM'),'MONTH')
其中V_MONTH_NUM是月份号
SELECT to_char(to_date(V_MONTH_NUM,'MM'),'MONTH') from dual;
这个对我很有用:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
上面的帖子来自@leoinfo和@Valentino Vranken。刚刚做了一个快速选择,它工作。
有点俗气,但应该有用:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
以下是我的工作:
CAST(GETDATE() AS CHAR(3))
推荐文章
- SQL Server数据库备份恢复到低版本
- 在MySQL中检测值是否为number
- MySQL中两个日期之间的差异
- SQL Server:过滤sp_who2的输出
- 使用SQL查询查找最近的纬度/经度
- 在SQL Server上使用varchar(MAX) vs TEXT
- Visual Studio: ContextSwitchDeadlock
- Sql Server字符串到日期的转换
- 将一列的多个结果行连接为一列,按另一列分组
- 检查MySQL表是否存在而不使用“select from”语法?
- 如何将SQL Azure数据库复制到本地开发服务器?
- SQL Server 2008不能用新创建的用户登录
- 在PostgreSQL中快速发现表的行数
- 更改varchar列的大小为较低的长度
- 从表中选择1是什么意思?