如何在sql中获得前一年(12月)和月份显示当月

时间:2016-05-19 11:00:06

标签: sql sql-server

我有日期时间值列表。如何选择前一年仅适用于12月。

例如:

Current month = May 2016
Previous year of december = Dec 2015
(it will display data from dec 2015 to may 2016)

if Current month = May 2017
Previous year of december = Dec 2016 and so on.
(it will display data from dec 2015 to may 2016)

有什么想法吗?非常感谢你

3 个答案:

答案 0 :(得分:1)

以下查询将提供所需的输出: -

declare @val as date='2016-05-19'

select concat(datename(MM,DATEADD(yy, DATEDIFF(yy,0,@val), -1)),'   ',datepart(YYYY,DATEADD(yy, DATEDIFF(yy,0,@val), -1)))

输出:2015年12月

答案 1 :(得分:0)

您可以减去月份数:

select dateadd(month, - month(val), val)

答案 2 :(得分:0)

SELECT 
*
FROM
TableName
WHERE
TableName.Date BETWEEN CONVERT(DATE,CONVERT(VARCHAR,DATEPART(YYYY,GETDATE())-1)+'-12-'+'01') AND GETDATE()