À 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?
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)
Avez-vous essayé DATENAME(MONTH, S0.OrderDateTime)
?
Changement:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
À:
CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth
Essaye ça:
SELECT LEFT(DATENAME(MONTH,Getdate()),3)
Sélectionnez SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)
dans votre nom de table
Dans SQL Server 2012, il est possible d'utiliser FORMAT(@mydate, 'MMMM') AS MonthName
Cela vous donnera ce que vous demandez:
select convert(varchar(3),datename(month, S0.OrderDateTime))
SELECT MONTHNAME( `col1` ) FROM `table_name`
DECLARE @iMonth INT = 12
sélectionnez CHOISIR (@ LE MOIS, «JANVIER», «FÉVRIER», «MARS», «AVRIL», «MAI», «JUIN», «JUILLET», «SEPTEMBRE», «OCTOBRE», «NOVEMBRE», 'DÉCEMBRE')
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)
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