如何才能获得上一季度的最后一天?
Select DateAdd(day, -1, dateadd(qq, DateDiff(qq, 0, @Date), 0))
我找到了这个SQL脚本,但它对我不起作用。
答案 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')
此外,您可以在使用时获得日期时间:
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