[SQL] 어떻게 현재 연도의 처음과 마지막 날짜를 얻으려면?
SQL어떻게 현재 연도의 처음과 마지막 날짜를 얻으려면?
어떻게 현재 연도의 처음과 마지막 날짜를 얻을 수, SQL 서버 2000을 사용하십니까?
예상 출력 :
01/01/2012과 31/12/2012
해결법
-
==============================
1.
SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
위의 쿼리는 짧은 올해의 마지막 순간 24 시간에 대해 12 월 31 일이의 시작 부분에 자정에 날짜 시간 값을 제공합니다. 년 12 월 31 일에 발생할 수있는 시간을 포함 할 경우, 당신은 <비교하여, 다음 해의 첫 번째 비교해야한다. 아니면 현재 연도의 마지막 몇 밀리 초에 비교할 수 있지만 (예 : DATETIME2 등) DATETIME 이외의 것을 사용하는 경우에는이 여전히 격차를 잎 :
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
기술 세부 사항
DATEDIFF 1900 년부터의 연수를 파악하여이 작업 (YY, 0, GETDATE ())와 다음의 날짜에 해당 추가 이것은 대체하여, 임의의 날짜 일을 변경할 수 = 1 월 1 일 1900 제로 GETDATE () 또는 부와 DATEDIFF (...) 함수로 대체하여, 임의의 해 "연도 - 1900"
SELECT DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015, DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
-
==============================
2.당신은 () GETUTCDATE를 사용하여 얻은 현재 날짜에서, DATEPART 함수를 사용하여 현재 연도를 얻을 수 있습니다
당신은 () GETUTCDATE를 사용하여 얻은 현재 날짜에서, DATEPART 함수를 사용하여 현재 연도를 얻을 수 있습니다
SELECT '01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())), '31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
-
==============================
3.여기 아주 간단한 방법이있다;
여기 아주 간단한 방법이있다;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year'; SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
그것은 섹시 아니지만, 그것을 작동합니다.
-
==============================
4.간단하게 쓰기 : -
간단하게 쓰기 : -
select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))
올해의 날짜를 시작합니다.
select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))
-
==============================
5.매년 만, 예를 들면 그 날과 달 연도를 부착한다 무엇을해야 마지막 날짜로 1 일 첫째 날짜와 (31) : -
매년 만, 예를 들면 그 날과 달 연도를 부착한다 무엇을해야 마지막 날짜로 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]
-
==============================
6.첫 번째 올해의 마지막 날을 얻으려면 하나는 CONCAT 기능을 사용할 수 있습니다. 결과 값은 어떤 형식으로 캐스팅 할 수있다.
첫 번째 올해의 마지막 날을 얻으려면 하나는 CONCAT 기능을 사용할 수 있습니다. 결과 값은 어떤 형식으로 캐스팅 할 수있다.
CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear, CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear
-
==============================
7.현재 연도의 시작 날짜 :
현재 연도의 시작 날짜 :
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
현재 연도의 종료일 :
SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))
-
==============================
8.또 다른 방법 : (이후는 SQL 서버 2012)
또 다른 방법 : (이후는 SQL 서버 2012)
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay, DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay
-
==============================
9.이 하나를 체크 아웃 :
이 하나를 체크 아웃 :
select convert(varchar(12),(DateAdd(month,(Month(getdate())-1) * -1, DateAdd(Day,(Day(getdate())-1) * -1,getdate()))),103) as StartYear, convert(varchar(12),DateAdd(month,12 - Month(getdate()), DateAdd(Day,(31 - Day(getdate())),getdate())),103) as EndYear
-
==============================
10.
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
-
==============================
11.
print Cast('1/1/' + cast(datepart(yyyy, getdate()) as nvarchar(4)) as date)
-
==============================
12.당신이 특정 연도에 대한 동작 모든 것을 수행에 흥미있는 것처럼이 경우 실제로, 나는이 같은 YEAR () 함수를 사용하는 것이 좋습니다한다면 그것은 같습니다 :
당신이 특정 연도에 대한 동작 모든 것을 수행에 흥미있는 것처럼이 경우 실제로, 나는이 같은 YEAR () 함수를 사용하는 것이 좋습니다한다면 그것은 같습니다 :
SELECT * FROM `table` WHERE YEAR(date_column) = '2012';
동일은 DAY ()와 MONTH 간다 (). MySQL은 / MariaDB가 변형하고 (그렇게하지 특정 2000) SQL Server 2008의 도입을 위해 그들은 또한 사용할 수 있습니다.
-
==============================
13.
select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31') from dual
-
==============================
14.다음과 같이 마이크로 소프트 SQL 서버 (T-SQL)에서이 수행 할 수 있습니다
다음과 같이 마이크로 소프트 SQL 서버 (T-SQL)에서이 수행 할 수 있습니다
--beginning of year select '01/01/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP))) --end of year select '12/31/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
CURRENT_TIMESTAMP가 - 쿼리의 실행시의 SQL 서버의 날짜를 반환합니다.
년 - 현재 타임 스탬프의 연도 부분을 가져옵니다.
STR, LTRIM이 -이 두 가지 기능은 우리가 원하는 접두사로 concatinated 할 수있는 VARCHAR로이 변환 할 수 있도록 적용됩니다 (이 경우에는 올해의 첫 번째 날짜 또는 연도의 마지막 날짜 중 하나입니다). 어떤 이유로 YEAR 함수에 의해 생성 된 결과는 스페이스 접두어있다. 이를 해결하기 위해 우리는 트림을 왼쪽 된 LTRIM 함수를 사용합니다.
-
==============================
15.그것은 월의 1에 도달하면 당신은 여전히 마지막 년 날짜가 될 수 있습니다.
그것은 월의 1에 도달하면 당신은 여전히 마지막 년 날짜가 될 수 있습니다.
select convert(date, DATEADD(yy, DATEDIFF(yy, 0, DATEadd(day, -1,getdate())), 0), 103 ) AS StartOfYear, convert(date, DATEADD(yy, DATEDIFF(yy, 0, DATEDIFF(day, -1,getdate()))+1, -1), 103 )AS EndOfYear
-
==============================
16.이 시도:
이 시도:
DATE_FORMAT(NOW(),'01/01/%Y') DATE_FORMAT(NOW(),'31/12/%Y')
-
==============================
17.데모 Lalmuni --- ---
데모 Lalmuni --- ---
create table Users ( userid int,date_of_birth date )
--- 삽입 값 ---
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
from https://stackoverflow.com/questions/13437362/how-to-get-the-first-and-last-date-of-the-current-year by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 모든 테이블 명령을 드롭 (0) | 2020.04.30 |
---|---|
[SQL] 프로젝션 및 선택은 무엇인가? (0) | 2020.04.30 |
[SQL] SQL 쿼리 내에서 두 개의 필드를 SUM하는 방법 (0) | 2020.04.30 |
[SQL] 일반 영어 정규화 (0) | 2020.04.30 |
[SQL] java.sql.Date 대 SQL 날짜의 시간대 (0) | 2020.04.30 |