Получить месяц и год из даты и времени в SQL Server 2005 - PullRequest
80 голосов
/ 05 сентября 2008

Мне нужен месяц + год от даты и времени в SQL Server, например «Январь 2008». Я группирую запрос по месяцам, годам. Я искал и нашел такие функции, как datepart, convert и т. Д., Но ни одна из них не показалась мне полезной. Я что-то здесь упускаю? Есть ли функция для этого?

Ответы [ 20 ]

168 голосов
/ 05 сентября 2008
select 
datepart(month,getdate()) -- integer (1,2,3...)
,datepart(year,getdate()) -- integer
,datename(month,getdate()) -- string ('September',...)
71 голосов
/ 05 сентября 2008

Если вы имеете в виду, что хотите вернуть их в виде строки в этом формате;

SELECT 
  CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120) 
FROM customers

Вот другие параметры формата

36 голосов
/ 24 ноября 2014

Начиная с SQL Server 2012, вы можете использовать:

SELECT FORMAT(@date, 'yyyyMM')
11 голосов
/ 22 ноября 2010

Использование:

select datepart(mm,getdate())  --to get month value
select datename(mm,getdate())  --to get name of month
11 голосов
/ 15 января 2009

Забавно, я просто пытался написать этот же запрос в 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

Создает следующий вывод (пример).

Month | Year | Total

January | 2009 | 2
8 голосов
/ 18 июня 2016

В SQL Server 2012 можно использовать ниже

выберите ФОРМАТ (getdate (), «МММ гггг»)

Это дает точное "июнь 2016"

6 голосов
/ 14 мая 2009

Как насчет этого?

Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
5 голосов
/ 15 января 2009
( Month(Created) + ',' + Year(Created) ) AS Date
4 голосов
/ 01 июня 2014

лучший способ сделать это с:

dateadd(month,datediff(month,0,*your_date*),0)

будет сохранять ваш тип даты и времени

4 голосов
/ 05 сентября 2008

Этот формат не существует. Вам нужно сделать комбинацию из двух вещей,

select convert(varchar(4),getdate(),100)  + convert(varchar(4),year(getdate()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...