次の形式で月の最後の日を見つける必要があります。
"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に関するものでしたが、言及したいと思いました。SQL2012の時点で、今月の最後の日を取得するEOMONTH()
関数があります。元の質問者が指定した形式で取得するには、datetime
にキャストする必要があります。
SELECT CAST(eomonth(GETDATE()) AS datetime)
SQL Server 2012では、 eomonth
関数 が導入されています。
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)
月の最終日を計算するのは非常に簡単な計算です-
出力-1374、getdate()出力が「2014-07-23 19:33:46.850」の場合
出力-1375、getdate()出力が「2014-07-23 19:33:46.850」の場合
出力-「2014-08-01 00:00:00.000」、getdate()の出力が「2014-07-23 19:33:46.850」の場合
出力-'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
DATEADD(DAY、-(DAY(DATEADD(MONTH、1、GETDATE()))))、DATEADD(MONTH、1、GETDATE()))を選択します
これはT-sqlでうまく機能します。
クエリのGETDATE()を列名に置き換えます。
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
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]