Мне нужен месяц + год с даты и времени в SQL Server, например «Январь 2008». Группирую запрос по месяцам, годам. Я искал и нашел такие функции, как datepart, convert и т. Д., Но ни одна из них не кажется полезной для этого. Я что-то упустил? Есть ли для этого функция?
sql
sql-server
Малик Дауд Ахмад Хохар
источник
источник
Ответы:
Если вы имеете в виду, что хотите вернуть их в виде строки в этом формате;
SELECT CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120) FROM customers
Вот другие варианты формата
источник
select datepart(month,getdate()) -- integer (1,2,3...) ,datepart(year,getdate()) -- integer ,datename(month,getdate()) -- string ('September',...)
источник
datepart(month,getdate())
иdatepart(year,getdate())
. Что такое месяц и год ?Начиная с SQL Server 2012, вы можете использовать:
SELECT FORMAT(@date, 'yyyyMM')
источник
Использование:
select datepart(mm,getdate()) --to get month value select datename(mm,getdate()) --to get name of month
источник
Забавно, я просто играл с написанием того же запроса в SQL Server, а затем в 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
Он производит следующий вывод (пример).
источник
В SQL Server 2012 можно использовать нижеприведенное
выберите FORMAT (getdate (), 'MMM yyyy')
Это дает точное «июнь 2016».
источник
Как насчет этого?
Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
источник
источник
Такого формата не существует. Вам нужно сделать комбинацию из двух вещей:
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
источник
лучший способ сделать это:
он сохранит ваш тип даты и времени
источник
возвращает полное название месяца, -, полный год, например
March-2017
источник
У меня была такая же проблема, и, осмотревшись, я обнаружил следующее:
SELECT DATENAME(yyyy, date) AS year FROM Income GROUP BY DATENAME(yyyy, date)
Отлично работает!
источник
Преобразование даты в первое число месяца позволяет группировать и упорядочивать по одному атрибуту, и, по моему опыту, это быстрее.
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)
источник
---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
источник
дает формат "2006-04"
источник
Вопрос касается SQL Server 2005, многие ответы здесь относятся к более поздней версии SQL Server.
select convert (varchar(7), getdate(),20) --Typical output 2015-04
SQL Server 2005 не имеет функции даты, которая была представлена в SQL Server 2008
источник
Да, вы можете использовать
datename(month,intime)
для получения месяца в тексте.источник
Ответ: МЕСЯЦ_ Январь Январь Сентябрь Октябрь Декабрь Октябрь Сентябрь
источник
Отлично работает.
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
источник
Следующее работает отлично! Я просто использовал это, попробуйте.
источник