source

이달의 마지막 날을 찾기 위한 SQL 쿼리

factcode 2023. 10. 31. 22:55
반응형

이달의 마지막 날을 찾기 위한 SQL 쿼리

다음 형식으로 한 달의 마지막 날을 찾아야 합니다.

"2013-05-31 00:00:00:000"

아무나 도와주세요.

이거 먹어봐요.

CREATE FUNCTION [dbo].[udf_GetLastDayOfMonth] 
(
    @Date DATETIME
)
RETURNS DATETIME
AS
BEGIN

    RETURN DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))

END

쿼리:

DECLARE @date DATETIME
SELECT @date = '2013-05-31 15:04:10.027'

SELECT DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))

출력:

-----------------------
2013-05-31 00:00:00.000

이 질문은 SQL Server 2005에 대한 질문인 것으로 알고 있습니다. 하지만 언급하고 싶은 것은 SQL 2012의 경우 다음과 같습니다.EOMONTH()이달의 마지막 날을 나타내는 함수입니다.원래 질문자가 지정한 형식으로 해당 항목을 가져오려면 해당 항목에 캐스트해야 합니다.datetime.

SELECT CAST(eomonth(GETDATE()) AS datetime)

SQL Server 2012에는 다음과 같은 기능이 도입되었습니다.

select eomonth('2013-05-31 00:00:00:000')
-->
2013-05-31
declare @date datetime;
set @date = getdate(); -- or some date
select dateadd(month,1+datediff(month,0,@date),-1);
dateadd(month,1+datediff(month,0,getdate()),-1)

런 체크하기

print dateadd(month,1+datediff(month,0,@date),-1)

Snowflake(및 다른 SQL 엔진)에서는 을 사용할 수 있습니다.

select to_date('2015-05-08T23:39:20.123-07:00') as "DATE",
       last_day("DATE", 'MONTH') as "LAST DAY OF MONTH";

다음을 반환합니다.

DATE         LAST DAY OF MONTH
2015-05-08          2015-05-31

시도해보세요

SELECT CONVERT(DATE,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) AS lastDayOfMonth
Declare @GivenDate datetime 
Declare @ResultDate datetime 
DEclare @EOMDate datetime 
Declare @Day int 
set @GivenDate=getdate() 
set @GivenDate= (dateadd(mm,1,@GivenDate)) 
set @Day =day(@GivenDate) 
set @ResultDate=dateadd(dd,-@Day+1,@GivenDate) 
select @EOMDate =dateadd(dd,-1 ,@ResultDate) 
select @EOMDate 

보고서 작성을 위해 한 달을 더하고 하루를 뺀 다른 버전:

ex: 월 시작은 '2019-10-01'

dateadd(day,-1,dateadd(month,1,StartofMonth))

월말은 '2019-10-31'이 됩니다.

Select DATEADD(DAY, -(DAY(DATEADD(MONTH, 1, GETDATE()))),DATEADD(MONTH, 1, GETDATE()))

이것은 T-sql에서 잘 작동합니다.

교체GETDATE()당신의 열 이름을 가진 쿼리의.

그 달의 마지막 날짜를 계산하는 것은 꽤 간단한 계산입니다 -

1 - DATEIFF 기능을 이용하여 오늘 날짜까지의 총 개월 수 찾기 -

Select DATEDIFF(MM,0,GETDATE())

출력 - 1374, getdate() 출력이 "2014-07-23 19:33:46.850"인 경우

2 - 1씩 증가하여 총 개월 수 -

Select DATEDIFF(MM,0,GETDATE())+1

출력 - 1375, Getdate() 출력이 "2014-07-23 19:33:46.850"인 경우

3 - 다음 달 첫 날짜를 맞춥니다.

Select DATEADD(MM,DATEDIFF(MM,0,GETDATE())+1,0)

출력 - '2014-08-01 00:00:00.000', Getdate() 출력이 '2014-07-23 19:33:46.850'인 경우

4 - 다음 달의 첫 번째 날짜에 -1을 빼면 해당 달의 마지막 날짜가 반환됩니다. -

Select DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,0,GETDATE())+1,0))

출력 - '2014-07-31 00:00:00.000', Getdate() 출력이 '2014-07-23 19:33:46.850'인 경우

같은 계산 방법으로 다음을 달성할 수 있습니다.

  1. 다음달마지막날짜
  2. 전월의 마지막 날짜 등입니다.
TO FIND 1ST and Last day of the Previous, Current and Next Month in Oracle SQL
-----------------------------------------------------------------------------
SELECT 
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE,-2))+1 FDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1)) LDPM,
LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 FDCM,
LAST_DAY(SYSDATE)LDCM,
LAST_DAY(SYSDATE)+1 FDNM,
LAST_DAY(LAST_DAY(SYSDATE)+1) LDNM
FROM DUAL
declare @date date=getdate()
declare @st_date date,@end_dt date
set @st_date=convert(varchar(5),year(@date))+'-'+convert(varchar(5),month(@date))+'-01'
set @end_dt=DATEADD(day,-1, DATEADD(month,1,@st_date))
---------**************--------------
select @st_date as [START DATE],@end_dt AS [END DATE]

DATEADD(MONTH, DATEIFF(MONTH, -1, GETDATE())-0, -1) LastDate를 선택합니다.

나의 훌륭한 접근법.안부 전해요

DECLARE @MAXDATE INT=(SELECT MAX(DATEPART(YEAR,ORDERDATE)) FROM Orders)
DECLARE @MINDATE INT=(SELECT MIN(DATEPART(YEAR,ORDERDATE)) FROM Orders)
DECLARE @HORA INT=(SELECT MIN( DATEPART(HOUR,ORDERDATE)) FROM ORDERS)
DECLARE @DIA INT = 28

SELECT Employees.EmployeeID , Orders. OrderID , OrderDate  FROM Employees
INNER JOIN Orders 
ON Employees.EmployeeID = Orders.EmployeeID
Where  (DATEPART(YEAR,ORDERDATE)) >=@mindate and  (DATEPART(YEAR,ORDERDATE))<= @maxdate
and DATEPART(HOUR,ORDERDATE)=@HORA   and DATEPART(DAY,ORDERDATE) IN (30,31) OR DATEADD(DAY,0,DATEPART(DAY,ORDERDATE))=28 AND
DATEADD(MONTH,0,DATEPART(MONTH,ORDERDATE))=2
ORDER BY 1 ASC

언급URL : https://stackoverflow.com/questions/16646585/sql-query-to-find-the-last-day-of-the-month

반응형