2014-10-02 90 views
2

我想获得上季度和下季度的日期。上季度和下季度

我曾尝试:

SELECT 
convert(date, DATEADD(q, DATEDIFF(q,0,GETDATE()) -1 ,0)) FirstQDate, 
convert(date, DATEADD(s,-1,DATEADD(q, DATEDIFF(q,0,GETDATE()),0))) LastQDate 

回答

4

检查This

SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) - 1, 0)-- First day of last quarter 
SELECT DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0))-- Last day of last quarter 
SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) + 1, 0)-- First day of Next quarter 
SELECT DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) +2, 0))-- Last day of Next quarter 
0

而且,在许多 现实世界的公司,我已经在过去几年的工作,是在某个地方一个“有数百年历史的大桌子”。该表中的其他列提供了针对每个日期的预先计算的商业号码(无论它们可能是......)。

有一个程序在某处这是(是...)用于填充这个表,这是的全“这样的计算,”正是让没有任何其他程序或查询有做一样。相反,他们只是“查看它”。

这张表经常有许多相同的副本散布出来,它们出现在业务中的大多数查询中。当业务的日期相关计算是...... “好,奇怪” ...(正如他们经常这样)......这恰好是一个务实和优雅的解决方案。它会将“复杂的计算”推出查询本身,以支持这些预先计算的数字。