获取SQL server上个月的记录

新手上路,请多包涵

我想根据我的数据库表 [member] 字段“date_created”获取上个月的记录。

执行此操作的 sql 是什么?

为了澄清,上个月 - 2009 年 1 月 8 日至 2009 年 8 月 31 日

如果今天是 2010 年 3 月 1 日,我需要获取 2009 年 1 月 12 日到 2009 年 12 月 31 日的记录。

原文由 Billy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 498
2 个回答
SELECT *
FROM Member
WHERE DATEPART(m, date_created) = DATEPART(m, DATEADD(m, -1, getdate()))
AND DATEPART(yyyy, date_created) = DATEPART(yyyy, DATEADD(m, -1, getdate()))

您需要检查月份和年份。

原文由 Dave Barker 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我所做的,所以我可以把它放在一个视图中:

 ALTER view [dbo].[MyView] as

with justdate as (
select getdate() as rightnow
)
, inputs as (
select dateadd(day, 1, EOMONTH(jd.rightnow, -2)) as FirstOfLastMonth
      ,dateadd(day, 1, EOMONTH(jd.rightnow, -1)) as FirstOfThisMonth
  from justdate jd
)
SELECT TOP 10000
       [SomeColumn]
      ,[CreatedTime]
  from inputs i
  join [dbo].[SomeTable]
    on createdtime >= i.FirstOfLastMonth
   and createdtime < i.FirstOfThisMonth
 order by createdtime
;

请注意,我故意运行 getdate() 一次。

原文由 Be Kind To New Users 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进