SQL上个月(也在一月份)



你好,我正在寻找一种简单的方法,如何获取上个月的数据。我收到了这个代码,但它在一月份没有工作(结果是2021年12月,我需要2020年12月(

select month(dateadd(month,-1,getdate())), year(getdate())

假设您有某种日期列。

在SQL Server中,您可以使用datediff():来表达这个概念

where datediff(month, datecol, getdate()) = 1

然而,这并不是";sargable";,这意味着它阻止索引的使用。因此,我建议:

where datecol < datefromparts(year(getdate()), month(getdate()), 1) and
datecol >= dateadd(month, 1, datefromparts(year(getdate()), month(getdate()), 1))

如果你只是想要上个月的第一天,你可以使用:

dateadd(month, 1, datefromparts(year(getdate()), month(getdate()), 1))

试试这个

select CASE WHEN month(getdate())>1 THEN  month(getdate())-1   ELSE 12   END ,

CASE WHEN month(getdate(((>1然后年份(getdate(((其他年份(getdate(((-1结束

使用这里给出的答案:如何在SQL中选择一个月的第一天?

SELECT dateadd(month,-1,DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as previousmonth;

输出:2020-12-01 00:00:00.000

我可以使用FORMAT函数提供下一个查询:

SELECT 
-- get current day in previous month
FORMAT(dateadd(month, -1, getdate()), 'yyyy-MM-dd') as current_previousmonth,
-- get first of previous month
FORMAT(dateadd(month, -1, getdate()), 'yyyy-MM-01') as first_previousmonth,
-- previous month without date
FORMAT(dateadd(month, -1, getdate()), 'yyyy-MM') as previousmonth;

在此处测试T-SQL

开始吧!

select dateadd(mm,-1,eomonth(getdate())) as [Previous Month]

结果:

Previous Month
--------------
2020-12-31

您也可以使用CONVERT()FORMAT()函数来根据需要格式化日期。

尝试SELECT FORMAT(DATEADD(月,-1,GETDATE(((,'MM/yyyy'(;

它会给你上个月和今年的信息。如果你正在与现有表中的日期列进行比较,那么你也需要日期部分,因为你想知道前一个月是哪一年的12月。但如果你不想要年份,那么只需调整"MM/yyyy"部分以适应你的目的。

相关内容

  • 没有找到相关文章