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

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

Ответы [ 20 ]

2 голосов
/ 08 марта 2017

возвращает полное название месяца, -, полный год, например March-2017

CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))
1 голос
/ 18 октября 2013
cast(cast(sq.QuotaDate as date) as varchar(7))

дает формат "2006-04"

1 голос
/ 08 октября 2013
---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
1 голос
/ 09 мая 2009

У меня была такая же проблема, и после осмотра я нашел это:

SELECT DATENAME(yyyy, date) AS year
FROM Income
GROUP BY DATENAME(yyyy, date)

Отлично работает!

1 голос
/ 08 апреля 2015

Вопрос касается SQL Server 2005, многие ответы здесь относятся к более поздней версии SQL Server.

select convert (varchar(7), getdate(),20)
--Typical output 2015-04

SQL Server 2005 не имеет функции даты , которая была введена в SQL Server 2008

1 голос
/ 11 апреля 2013

Преобразование даты в первое число месяца позволяет вам группировать и сортировать по одному атрибуту, и в моем опыте это происходит быстрее.

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)
0 голосов
/ 03 июня 2017

Отлично работает.

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
0 голосов
/ 22 марта 2011

Следующее работает отлично! Я просто использовал это, попробуйте.

date_format(date,'%Y-%c')
0 голосов
/ 21 января 2010

Да, вы можете использовать datename(month,intime) для получения месяца в тексте.

0 голосов
/ 11 ноября 2015
  ,datename(month,(od.SHIP_DATE)) as MONTH_

Ответ: МЕСЯЦ_ январь январь сентябрь октября Декабрь октября Сентябрь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...