Potrzebuję miesiąca + roku od daty i godziny w SQL Server, na przykład „Jan 2008”. Zapytanie grupuję według miesiąca, roku. Szukałem i znalazłem funkcje takie jak datepart, convert itp., Ale żadna z nich nie wydaje się przydatna do tego. Czy coś mi umyka? Czy jest do tego funkcja?
sql
sql-server
Malik Daud Ahmad Khokhar
źródło
źródło
Odpowiedzi:
Jeśli masz na myśli, że chcesz je z powrotem jako ciąg, w tym formacie;
SELECT CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120) FROM customers
Oto inne opcje formatu
źródło
select datepart(month,getdate()) -- integer (1,2,3...) ,datepart(year,getdate()) -- integer ,datename(month,getdate()) -- string ('September',...)
źródło
datepart(month,getdate())
idatepart(year,getdate())
. Co to jest miesiąc i rok ?Począwszy od SQL Server 2012 można używać:
SELECT FORMAT(@date, 'yyyyMM')
źródło
Posługiwać się:
select datepart(mm,getdate()) --to get month value select datename(mm,getdate()) --to get name of month
źródło
Zabawne, po prostu bawiłem się pisaniem tego samego zapytania w SQL Server, a następnie LINQ.
SELECT DATENAME(mm, article.Created) AS Month, DATENAME(yyyy, article.Created) AS Year, COUNT(*) AS Total FROM Articles AS article GROUP BY DATENAME(mm, article.Created), DATENAME(yyyy, article.Created) ORDER BY Month, Year DESC
Generuje następujący wynik (przykład).
źródło
W SQL Server 2012 można użyć poniżej
wybierz FORMAT (getdate (), 'MMM yyyy')
To daje dokładny „czerwiec 2016”
źródło
Co powiesz na to?
Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
źródło
źródło
Ten format nie istnieje. Musisz zrobić połączenie dwóch rzeczy,
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
źródło
najlepszym sposobem na to jest:
zachowa twój typ daty i godziny
źródło
zwraca pełną nazwę miesiąca, -, pełny rok np
March-2017
źródło
Miałem ten sam problem i po rozejrzeniu się znalazłem to:
SELECT DATENAME(yyyy, date) AS year FROM Income GROUP BY DATENAME(yyyy, date)
Działa świetnie!
źródło
Konwersja daty na pierwszy dzień miesiąca umożliwia grupowanie według i porządkowanie według jednego atrybutu i z mojego doświadczenia wynika, że jest to szybsze.
declare @mytable table(mydate datetime) declare @date datetime set @date = '19000101' while @date < getdate() begin insert into @mytable values(@date) set @date = dateadd(day,1,@date) end select count(*) total_records from @mytable select dateadd(month,datediff(month,0,mydate),0) first_of_the_month, count(*) cnt from @mytable group by dateadd(month,datediff(month,0,mydate),0)
źródło
---Lalmuni Demos--- create table Users ( userid int,date_of_birth date ) ---insert values--- insert into Users values(4,'9/10/1991') select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years, MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months, DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days, from users
źródło
podaje format „2006-04”
źródło
Pytanie dotyczy SQL Server 2005, wiele odpowiedzi tutaj dotyczy nowszej wersji SQL Server.
select convert (varchar(7), getdate(),20) --Typical output 2015-04
SQL Server 2005 nie ma funkcji daty, która została wprowadzona w SQL Server 2008
źródło
Tak, możesz użyć,
datename(month,intime)
aby wyświetlić miesiąc w tekście.źródło
Odpowiedź: MONTH_ styczeń styczeń wrzesień październik grudzień październik wrzesień
źródło
Działa świetnie.
DECLARE @pYear VARCHAR(4) DECLARE @pMonth VARCHAR(2) DECLARE @pDay VARCHAR(2) SET @pYear = RIGHT(CONVERT(CHAR(10), GETDATE(), 101), 4) SET @pMonth = LEFT(CONVERT(CHAR(10), GETDATE(), 101), 2) SET @pDay = SUBSTRING(CONVERT(CHAR(10), GETDATE(), 101), 4,2) SELECT @pYear,@pMonth,@pDay
źródło
Poniższe działa idealnie! Po prostu go użyłem, wypróbuj.
źródło