SQL Server의 날짜 시간에서 월+연도(예: '2008년 1월'과 같은)가 필요합니다. 쿼리를 월, 연도별로 그룹화하고 있습니다. 날짜 부분, 변환 등과 같은 함수를 검색하여 찾았지만 그 중 어느 것도 유용하지 않은 것 같습니다. 제가 뭔가 놓치고 있는 건가요? 이 작업을 위한 함수가 있나요?
난 그저 재미있는 게임을 중심으로 한 후 이 글을 쓰는 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
첫 번째 달 수 있도록 변환 날짜 및 Order By 그룹순 단일 특성 및 it& # 39 의 속도를 내 경험하십시오.
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
문제는 여기에 대답을 나중에 SQL Server 버전에 대한 SQL Server 2005년, 많은 있다.
select convert (varchar(7), getdate(),20)
--Typical output 2015-04
SQL Server 2005년 데이트였어 없는 함수 도입된 SQL Server 2008년
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