SQL Server 2000을 사용하여 올해의 첫 번째 날짜와 마지막 날짜를 어떻게 알 수 있습니까?
예상 출력 :
01/01/2012
과 31/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))