你好,我正在寻找一种简单的方法,如何获取上个月的数据。我收到了这个代码,但它在一月份没有工作(结果是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"部分以适应你的目的。