使用SQL Server 2008
,我有一个用于创建视图的查询,我正在尝试显示月份名称而不是整数。
在我的数据库中,datetime
位于名为OrderDateTime
的列中。返回日期的查询中的行是:
DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
这将返回一列年份和一列月份作为整数。我想返回月份名(Jan, Feb, etc
)。我试过了:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
这显然是不正确的,因为我
'AS'附近的语法错误
消息。我的查询的正确语法是什么?
答案 0 :(得分:142)
这将为您提供月份的全名。
select datename(month, S0.OrderDateTime)
如果您只想要前三个字母,可以使用此
select convert(char(3), S0.OrderDateTime, 0)
答案 1 :(得分:17)
您是否尝试过DATENAME(MONTH, S0.OrderDateTime)
?
答案 2 :(得分:12)
变化:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
要:
CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth
答案 3 :(得分:7)
试试这个:
SELECT LEFT(DATENAME(MONTH,Getdate()),3)
答案 4 :(得分:2)
从表名
中选择SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)
答案 5 :(得分:2)
在SQL Server 2012中,可以使用FORMAT(@mydate, 'MMMM') AS MonthName
答案 6 :(得分:1)
这将为您提供您的要求:
select convert(varchar(3),datename(month, S0.OrderDateTime))
答案 7 :(得分:1)
SELECT MONTHNAME( `col1` ) FROM `table_name`
答案 8 :(得分:0)
如果没有点击数据库,我们可以获取所有月份名称。
WITH CTE_Sample1 AS
(
Select 0 as MonthNumber
UNION ALL
select MonthNumber+1 FROM CTE_Sample1
WHERE MonthNumber+1<12
)
Select DateName( month , DateAdd( month , MonthNumber ,0 ) ) from CTE_Sample1
答案 9 :(得分:0)
declare @currentdate datetime = getdate()
select left(datename(month,DATEADD(MONTH, -1, GETDATE())),3)
union all
select left(datename(month,(DATEADD(MONTH, -2, GETDATE()))),3)
union all
select left(datename(month,(DATEADD(MONTH, -3, GETDATE()))),3)
答案 10 :(得分:0)
DECLARE @iMonth INT=12
SELECT CHOOSE(@iMonth,'JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER')
答案 11 :(得分:0)
对我来说,由于公司的限制,无法访问DATENAME...。但这也非常容易。
sequelize.define('users')