[sql] 올해의 첫 번째와 마지막 날짜를 얻는 방법은 무엇입니까?

SQL Server 2000을 사용하여 올해의 첫 번째 날짜와 마지막 날짜를 어떻게 알 수 있습니까?

예상 출력 :

01/01/201231/12/2012



답변

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

위의 쿼리는 12 월 31 일 초 자정의 datetime 값을 제공합니다. 이는 연중 마지막 순간보다 약 24 시간 부족한 것입니다. 12 월 31 일에 발생할 수있는 시간을 포함하려면 비교를 통해 다음 해의 첫 번째 시간과 비교해야합니다 <. 또는 현재 연도의 마지막 몇 밀리 초와 비교할 수 있지만 DATETIME이 아닌 다른 항목 (예 : DATETIME2)을 사용하는 경우 여전히 공백이 남습니다.

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
   DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear

기술 세부 정보

이것은 1900 년 이후의 연도 수를 알아 낸 DATEDIFF(yy, 0, GETDATE())다음 0 = 1900 년 1 월 1 일 날짜에 추가하여 작동 GETDATE()합니다. DATEDIFF(...)함수를 다음 으로 대체하여 부분 또는 임의의 연도를 대체하여 임의 의 날짜에 대해 작동하도록 변경할 수 있습니다. “년-1900.”

 SELECT
   DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
   DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015


답변

여기에 아주 간단한 방법이 있습니다.

SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';

섹시하지는 않지만 작동합니다.


답변

DATEPART함수를 사용하여 얻은 현재 날짜에서 현재 연도를 얻을 수 있습니다.getUTCDate()

SELECT
    '01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())),
    '31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))


답변

간단히 작성하십시오.

select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))

해당 연도의 시작일.

select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))  


답변

매년 첫 번째 날짜를 첫 번째 날짜로하고 31 일을 마지막 날짜로 지정해야합니다. 예를 들어 다음과 같이 연도를 해당 날짜와 월에 첨부하면됩니다.

 SELECT '01/01/'+cast(year(getdate()) as varchar(4)) as [First Day],
 '12/31/'+cast(year(getdate()) as varchar(4)) as [Last Day]


답변

그해의 첫날과 마지막 날을 얻으려면 CONCAT함수를 사용할 수 있습니다 . 결과 값은 모든 유형으로 캐스트 될 수 있습니다.

CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear,
CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear


답변

올해의 시작일 :

SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())

올해 종료일 :

SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))