查询日期范围需要年份至上个月末的日期和上一年的相应日期范围。我有一个'公式',通过月份和年份的数值来定义日期范围。例如上个月的结束是本月减去一个月。这工作很好,直到我打1月份,是今年的第一个,我不能使用当年。SQL日期范围年初至上一个月的上一年和上一年
我不是一个有经验的SQL用户,并且已经使用谷歌学习了解我所知道的大部分内容,但还没有成功找到这个问题的答案 - 找到前一个月结束的公式,但不是下面的其余三个日期。
DECLARE @PYStart datetime = '1/1/2015'
DECLARE @PYEnd datetime = '12/31/2015'
DECLARE @CYStart datetime = '1/1/2016' -- first day of previous month's year
DECLARE @CYEnd datetime = CONVERT(varchar, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)),101) -- last day of past month
SELECT YEAR(transaction_date) as 'Year', MONTH(transaction_date) as 'Month'
FROM TABLE_Q1
WHERE((transaction_date BETWEEN @pystart and @pyend) OR (transaction_date BETWEEN @cystart AND @cyend))
group by year(transaction_date), month(transaction_date)
- 下面的输出; Example output if you were to run today
年初至今的原因是什么? –
向我们展示示例数据和预期输出。 \t请阅读[**如何提问**](http://stackoverflow.com/help/how-to-ask) \t \t这里是一个伟大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)来了解如何提高您的问题质量并获得更好的答案。 –
年初至今。对于这个例子来说,截至上个月的结束将是年初至今。例如。截至今天,它将是2016年1月1日至2016年12月31日,但说今年3月将是2017年1月1日 - 2017年2月28日 –