前四半期の最終日を取得するにはどうすればよいですか?
Select DateAdd(day, -1, dateadd(qq, DateDiff(qq, 0, @Date), 0))
この SQL スクリプトを見つけましたが、うまくいきません。
Unix-Timeに必要な「0」を計算できないため、スクリプトは Sybase では機能しません。
例えば:
DECLARE @LastDay datetime
SELECT @LastDay = DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, '01.01.1970', GETDATE()), '01.01.1970'))
SELECT @LastDay
今日 (2013 年 11 月 7 日) これは次のように出力されます。
30.09.2013 00:00:00
サーバーがどのように構成されているかによって、日付形式が変わる可能性があります。
時間が必要ない場合は、データ型をに変更する必要があり@LastDay
ますdate
プロジェクトで利用する関数を作成しました
CREATE FUNCTION preQtr
(@pQtr DATE)
RETURNS Date
AS
BEGIN
DECLARE @OUTPUT DATE
SET @OUTPUT = (select DATEADD(D, -1, DATEADD(qq, DATEDIFF(qq, 0,@pQtr), 0)))
RETURN @OUTPUT
END
select dbo.preQtr('2016-06-30')
select dbo.preQtr('2016-03-31')
また、次のように使用すると日時を取得できます。
select DATEADD(s, -1, DATEADD(qq, DATEDIFF(qq, 0,'2016-03-31'), 0)) As PreviousQuarterLastdayTime
select DATEADD(s, -1, DATEADD(qq, DATEDIFF(qq, 0,'2016-03-31'), +1)) As QuarterFirstdayTime