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

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

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

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

Retourne une colonne d'années et d'une colonne de mois entiers. Je veux retourner les noms de mois (Jan, Feb, etc). J'ai essayé:

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

C'est évidemment incorrect, comme je reçois

Syntaxe incorrecte à proximité 'En tant QUE'

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

73
demandé sur DineshDB 2011-04-13 18:24:55

11 réponses

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)
136
répondu Mikael Eriksson 2011-04-13 14:35:00

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

16
répondu nithins 2014-10-23 01:34:31

Changement:

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

À:

CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth
12
répondu Jim Harris 2014-02-11 20:31:00

Essayez ceci:

SELECT LEFT(DATENAME(MONTH,Getdate()),3)
6
répondu Jeyaprakash 2014-12-22 12:52:48

Sélectionnez SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3) à partir du nom de votre Table

2
répondu Dilip Chauhan 2014-10-23 01:35:07

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

2
répondu Marlon Taborda 2016-10-13 14:55:18

Cela vous donnera ce que vous demandez:

select convert(varchar(3),datename(month, S0.OrderDateTime)) 
1
répondu Bamidelz 2013-03-01 15:47:48
SELECT MONTHNAME( `col1` ) FROM `table_name` 
1
répondu alvin 2016-12-08 08:28:52

Sans frapper db, nous pouvons récupérer tous les noms de 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
répondu Mou 2016-12-14 08:32:37

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
répondu stubs 2017-09-18 13:03:42

Déclarer @iMonth INT = 12

Sélectionner CHOOSE(@iMonth,'JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER')

0
répondu Natarajan Sambantham 2018-07-31 09:39:50