web-dev-qa-db-fra.com

Renvoi du nom du mois dans la requête SQL Server

À l'aide de SQL Server 2008, une requête est utilisée pour créer une vue et j'essaie d'afficher un nom du mois au lieu d'un entier. 

Dans ma base de données, la datetime se trouve dans une colonne appelée OrderDateTime. Les lignes de la requête qui renvoient la date sont les suivantes:

DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

Cela retourne une colonne d'années et une colonne de mois sous forme d'entiers. Je veux renvoyer les noms de mois (Jan, Feb, etc). J'ai essayé:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

Ceci est évidemment incorrect, car je reçois 

Syntaxe incorrecte près de 'AS'

message. Quelle est la syntaxe appropriée pour ma requête?

75
Casey DiBroaggio

Cela vous donnera le nom complet du mois.

select datename(month, S0.OrderDateTime)

Si vous voulez seulement les trois premières lettres, vous pouvez utiliser ceci

select convert(char(3), S0.OrderDateTime, 0)
141
Mikael Eriksson

Avez-vous essayé DATENAME(MONTH, S0.OrderDateTime)?

17
nithins

Changement:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

À:

CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth
12
Jim Harris

Essaye ça:

SELECT LEFT(DATENAME(MONTH,Getdate()),3)
7
Jeyaprakash

Sélectionnez SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3) dans votre nom de table

2
Dilip Chauhan

Dans SQL Server 2012, il est possible d'utiliser FORMAT(@mydate, 'MMMM') AS MonthName

2
Marlon Taborda

Cela vous donnera ce que vous demandez:

select convert(varchar(3),datename(month, S0.OrderDateTime)) 
1
Bamidelz
SELECT MONTHNAME( `col1` ) FROM `table_name` 
1
alvin

DECLARE @iMonth INT = 12

sélectionnez CHOISIR (@ LE MOIS, «JANVIER», «FÉVRIER», «MARS», «AVRIL», «MAI», «JUIN», «JUILLET», «SEPTEMBRE», «OCTOBRE», «NOVEMBRE», 'DÉCEMBRE')

0

fondamentalement ceci ...

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)
0
stubs

Sans frapper la base de données, nous pouvons récupérer le nom de tous les mois.

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
0
Mou