如何获得上一季度的最后一天?

时间:2013-11-07 14:00:35

标签: sql date datetime sybase

如何才能获得上一季度的最后一天?

Select DateAdd(day, -1, dateadd(qq, DateDiff(qq, 0, @Date), 0))

我找到了这个SQL脚本,但它对我不起作用。

2 个答案:

答案 0 :(得分:2)

脚本在Sybase中不起作用,因为它无法计算您需要{0}的“0”。

例如:

DECLARE @LastDay datetime
SELECT @LastDay = DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, '01.01.1970', GETDATE()), '01.01.1970'))
SELECT @LastDay

今天(2013年7月11日)这将输出:

30.09.2013 00:00:00

日期格式可能会发生变化,具体取决于服务器的配置方式。

如果您不想要时间,则必须将@LastDay的数据类型更改为date

答案 1 :(得分:0)

我创建了一个在我的项目中使用它的函数

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')

此外,您可以在使用时获得日期时间:enter image description here

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