Używając SQL Server 2008
, mam zapytanie, które jest używane do tworzenia widoku i próbuję wyświetlić nazwę miesiąca zamiast liczby całkowitej.
W mojej bazie danych datetime
znajduje się w kolumnie o nazwie OrderDateTime
. Wiersze w zapytaniu zwracające datę to:
DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
Zwraca kolumnę lat i kolumnę miesięcy jako liczby całkowite. Chcę zwrócić nazwy miesięcy (Jan, Feb, etc
). Próbowałem:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
Jak rozumiem, jest to oczywiście nieprawidłowe
Nieprawidłowa składnia w pobliżu „AS”
wiadomość. Jaka jest prawidłowa składnia mojego zapytania?
sql
sql-server-2008
type-conversion
Casey DiBroaggio
źródło
źródło
AS
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime)) AS OrderMonth
Odpowiedzi:
W ten sposób otrzymasz pełną nazwę miesiąca.
select datename(month, S0.OrderDateTime)
Jeśli chcesz tylko pierwsze trzy litery, możesz użyć tego
select convert(char(3), S0.OrderDateTime, 0)
źródło
Czy próbowałeś
DATENAME(MONTH, S0.OrderDateTime)
?źródło
Zmiana:
Do:
źródło
DATENAME
.DATEPART
nie zrobiłbym tego.Spróbuj tego:
SELECT LEFT(DATENAME(MONTH,Getdate()),3)
źródło
Wybierz
SUBSTRING (convert(varchar,S0.OrderDateTime,100),1,3)
nazwę stołuźródło
W SQL Server 2012 można użyć
FORMAT(@mydate, 'MMMM') AS MonthName
źródło
To da ci to, o co prosisz:
select convert(varchar(3),datename(month, S0.OrderDateTime))
źródło
SELECT MONTHNAME( `col1` ) FROM `table_name`
źródło
Bez wciskania db możemy pobrać nazwy wszystkich miesięcy.
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
źródło
w zasadzie to ...
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)
źródło
DECLARE @iMonth INT=12 SELECT CHOOSE(@iMonth,'JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER')
źródło
dla mnie DATENAME nie był dostępny z powodu ograniczeń firmy ... ale to też działało bardzo łatwo.
źródło