[SQL] SQL의 달의 마지막 날을 받기
SQLSQL의 달의 마지막 날을 받기
나는 SQL의 날짜로 주어진 달의 마지막 날을 얻을 필요가있다. 나는 달 1 일이있는 경우,이 같은 작업을 수행 할 수 있습니다 :
DATEADD(DAY, DATEADD(MONTH,'2009-05-01',1), -1)
그러나 아무도 내가 주어진 날짜의 달의 마지막 날을 찾을 수 있도록 그것을 일반화하는 방법을 알고 있는가?
해결법
-
==============================
1.여기 내 버전입니다. 어떤 문자열 조작 또는 필요한 주조, 그냥 하나 DATEADD, 연도와 월 기능에 각을 호출하지 :
여기 내 버전입니다. 어떤 문자열 조작 또는 필요한 주조, 그냥 하나 DATEADD, 연도와 월 기능에 각을 호출하지 :
DECLARE @test DATETIME SET @test = GETDATE() -- or any other date SELECT DATEADD(month, ((YEAR(@test) - 1900) * 12) + MONTH(@test), -1)
-
==============================
2.SQL 서버 2012에서 당신은 EOMONTH 기능을 사용할 수 있습니다.
SQL 서버 2012에서 당신은 EOMONTH 기능을 사용할 수 있습니다.
통사론
EOMONTH ( start_date [, month_to_add ] )
SELECT EOMONTH(@SomeGivenDate)
-
==============================
3.당신은 DAY () 함수를 사용하여 날짜에서 일을 얻을 수 있습니다 :
당신은 DAY () 함수를 사용하여 날짜에서 일을 얻을 수 있습니다 :
dateadd(day, -1, dateadd(month, 1, dateadd(day, 1 - day(date), date)))
-
==============================
4.나는이 오래된 질문이다 그러나 여기에서 나를 위해 작동 다른 해결책을 알고
나는이 오래된 질문이다 그러나 여기에서 나를 위해 작동 다른 해결책을 알고
SET @dtDate = "your date" DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
그리고 어떤 사람이 여기에 다른 예제를 찾고 있다면하는 것이 링크가 http://blog.sqlauthority.com/2007/08/18/sql-server-find-last-day-of-any-month-current-previous-next /
나는이 다른 어떤 사람 도움이되기를 바랍니다. 유래 바위 !!!!
-
==============================
5.SQL 서버에서 작동
SQL 서버에서 작동
Declare @GivenDate datetime SET @GivenDate = GETDATE() Select DATEADD(MM,DATEDIFF(MM, 0, @GivenDate),0) --First day of the month Select DATEADD(MM,DATEDIFF(MM, -1, @GivenDate),-1) --Last day of the month
-
==============================
6.진술을 바탕으로 :
진술을 바탕으로 :
SELECT DATEADD(MONTH, 1, @x) -- Add a month to the supplied date @x
과
SELECT DATEADD(DAY, 0 - DAY(@x), @x) -- Get last day of month previous to the supplied date @x
어떻게 이전 달의 마지막 날 (제공된 날짜의 월의 즉 마지막 날) 날짜 @x에 한 달을 추가하고 다음 검색에 대한
DECLARE @x DATE = '20-Feb-2012' SELECT DAY(DATEADD(DAY, 0 - DAY(DATEADD(MONTH, 1, @x)), DATEADD(MONTH, 1, @x)))
참고 : 이것은 2008 R2 SQL Server를 사용하여 테스트했다
-
==============================
7.그냥 조금에서 수식을 확장 :
그냥 조금에서 수식을 확장 :
dateadd(day, -1, dateadd(month, 1, cast(month('5/15/2009') as varchar(2)) + '/1/' + cast(year('5/15/2009') as varchar(4)))
-
==============================
8.SQL 서버 2012 이상 사용 EOMONTH를 들어 달의 마지막 날짜를 얻을 수 있습니다
SQL 서버 2012 이상 사용 EOMONTH를 들어 달의 마지막 날짜를 얻을 수 있습니다
현재 달의 디스플레이 종료 날짜에 SQL 쿼리
DECLARE @currentDate DATE = GETDATE() SELECT EOMONTH (@currentDate) AS CurrentMonthED
다음 달의 디스플레이 종료 날짜에 SQL 쿼리
DECLARE @currentDate DATE = GETDATE() SELECT EOMONTH (@currentDate, 1 ) AS NextMonthED
-
==============================
9.SQL Server를 사용, 여기에 달의 마지막 날을 찾을 수있는 또 다른 방법은 다음과 같습니다
SQL Server를 사용, 여기에 달의 마지막 날을 찾을 수있는 또 다른 방법은 다음과 같습니다
SELECT DATEADD(MONTH,1,GETDATE())- day(DATEADD(MONTH,1,GETDATE()))
-
==============================
10.WinSQL 지난 달의 마지막 날을 (얻을 즉 오늘 2017년 2월 9일, 반환 2017년 1월 31일입니다 : DATEADD 선택 (일, - 일 (오늘 ())는 오늘 ())
WinSQL 지난 달의 마지막 날을 (얻을 즉 오늘 2017년 2월 9일, 반환 2017년 1월 31일입니다 : DATEADD 선택 (일, - 일 (오늘 ())는 오늘 ())
-
==============================
11.다음 쿼리를 실행하려고, 그것은 당신에게 당신이 원하는 모든 것을 제공합니다 :)
다음 쿼리를 실행하려고, 그것은 당신에게 당신이 원하는 모든 것을 제공합니다 :)
Declare @a date =dateadd(mm, Datediff(mm,0,getdate()),0) Print('First day of Current Month:') Print(@a) Print('') set @a = dateadd(mm, Datediff(mm,0,getdate())+1,-1) Print('Last day of Current Month:') Print(@a) Print('') Print('First day of Last Month:') set @a = dateadd(mm, Datediff(mm,0,getdate())-1,0) Print(@a) Print('') Print('Last day of Last Month:') set @a = dateadd(mm, Datediff(mm,0,getdate()),-1) Print(@a) Print('') Print('First day of Current Week:') set @a = dateadd(ww, Datediff(ww,0,getdate()),0) Print(@a) Print('') Print('Last day of Current Week:') set @a = dateadd(ww, Datediff(ww,0,getdate())+1,-1) Print(@a) Print('') Print('First day of Last Week:') set @a = dateadd(ww, Datediff(ww,0,getdate())-1,0) Print(@a) Print('') Print('Last day of Last Week:') set @a = dateadd(ww, Datediff(ww,0,getdate()),-1) Print(@a)
-
==============================
12.WinSQL : 나는 지난 달에 대한 모든 레코드를 반환하고 싶었 :
WinSQL : 나는 지난 달에 대한 모든 레코드를 반환하고 싶었 :
where DATE01 between dateadd(month,-1,dateadd(day,1,dateadd(day,-day(today()),today()))) and dateadd(day,-day(today()),today())
이 같은 일을 :
where month(DATE01) = month(dateadd(month,-1,today())) and year(DATE01) = year(dateadd(month,-1,today()))
-
==============================
13.이 쿼리도 사용할 수 있습니다.
이 쿼리도 사용할 수 있습니다.
DECLARE @SelectedDate DATE = GETDATE() SELECT DATEADD(DAY, - DAY(@SelectedDate), DATEADD(MONTH, 1 , @SelectedDate)) EndOfMonth
-
==============================
14.제 2 센트 :
제 2 센트 :
select DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(day,(0-(DATEPART(dd,'2008-02-12')-1)),'2008-02-12')))
주권
-
==============================
15.당신이 자주 필요하면 매우 빠르고, 인라인 TVF, 그것을 포장 :
당신이 자주 필요하면 매우 빠르고, 인라인 TVF, 그것을 포장 :
http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/06/21/calculating-third-wednesday-of-the-month-with-inline-udfs.aspx ,
-
==============================
16.SQL 서버 2005를 사용, 이것은 나를 위해 작동합니다 :
SQL 서버 2005를 사용, 이것은 나를 위해 작동합니다 :
select dateadd(dd,-1,dateadd(mm,datediff(mm,0,YOUR_DATE)+1,0))
기본적으로, 당신은 YOUR_DATE에 대한 (SQL 서버) 시간의 시작부터 개월 수를 얻을. 그런 다음 달의 일련 번호를 얻기 위해 여기에 하나를 추가 할 수 있습니다. 그런 다음 당신은 다음 달 1 일의 날짜를 얻을 수 0 개월이 번호를 추가합니다. 이것에서 당신은 다음 YOUR_DATE의 마지막 날에 도착하기 하루 뺍니다.
-
==============================
17.이것은 마이크로 소프트 SQL 서버 2005를 사용, 나를 위해 작동합니다 :
이것은 마이크로 소프트 SQL 서버 2005를 사용, 나를 위해 작동합니다 :
DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,'2009-05-01')+1,0))
-
==============================
18.예를 들어, 어떤 달의 31 일 일부 기준일을 가지고 '20011231'. 그런 다음 사용 절차에 따라, (I 아래 실시 예 3과 동일 만 @dt 값 다르다 주었다).
예를 들어, 어떤 달의 31 일 일부 기준일을 가지고 '20011231'. 그런 다음 사용 절차에 따라, (I 아래 실시 예 3과 동일 만 @dt 값 다르다 주었다).
declare @dt datetime; set @dt = '20140312' SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231'); set @dt = '20140208' SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231'); set @dt = '20140405' SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');
-
==============================
19.나는 기능을 다음과 같은 쓴, 그것을 작동합니다.
나는 기능을 다음과 같은 쓴, 그것을 작동합니다.
이 날짜 시간 데이터 형식을 반환합니다. 제로시, 분, 초, 밀리 초.
CREATE Function [dbo].[fn_GetLastDate] ( @date datetime ) returns datetime as begin declare @result datetime select @result = CHOOSE(month(@date), DATEADD(DAY, 31 -day(@date), @date), IIF(YEAR(@date) % 4 = 0, DATEADD(DAY, 29 -day(@date), @date), DATEADD(DAY, 28 -day(@date), @date)), DATEADD(DAY, 31 -day(@date), @date) , DATEADD(DAY, 30 -day(@date), @date), DATEADD(DAY, 31 -day(@date), @date), DATEADD(DAY, 30 -day(@date), @date), DATEADD(DAY, 31 -day(@date), @date), DATEADD(DAY, 31 -day(@date), @date), DATEADD(DAY, 30 -day(@date), @date), DATEADD(DAY, 31 -day(@date), @date), DATEADD(DAY, 30 -day(@date), @date), DATEADD(DAY, 31 -day(@date), @date)) return convert(date, @result) end
그것은 아주 사용하기 쉽습니다. 예 2 :
select [dbo].[fn_GetLastDate]('2016-02-03 12:34:12') select [dbo].[fn_GetLastDate](GETDATE())
-
==============================
20.
---Start/End of previous Month Declare @StartDate datetime, @EndDate datetime set @StartDate = DATEADD(month, DATEDIFF(month, 0, GETDATE())-1,0) set @EndDate = EOMONTH (DATEADD(month, DATEDIFF(month, 0, GETDATE())-1,0)) SELECT @StartDate,@EndDate
from https://stackoverflow.com/questions/1051488/get-the-last-day-of-the-month-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #에서 SQL UPDATE 문 (0) | 2020.04.14 |
---|---|
[SQL] 자바 도구 LINQ [폐쇄] (0) | 2020.04.14 |
[SQL] 어떤 SQL 쿼리가 빠르다? 필터에 대한 기준이나 Where 절을하세요? (0) | 2020.04.14 |
[SQL] 열 등의 SQL 트랜스 행 (0) | 2020.04.14 |
[SQL] sp_reset_connection은 무엇입니까? (0) | 2020.04.14 |