sql - SQL 获取上个月(1 月也是)
问题描述
您好我正在寻找简单的方法,如何获取上个月的数据。我得到了这个代码,但它在一月份没有用(结果是 12 2021,我需要 12 2020)
select month(dateadd(month,-1,getdate())), year(getdate())
解决方案
据推测,您有某种日期列。
在 SQL Server 中,您可以使用以下方式表达此概念datediff()
:
where datediff(month, datecol, getdate()) = 1
但是,这不是“可分析的”,这意味着它会阻止使用索引。所以,我建议:
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))
推荐阅读
- c# - 为具有不同数量参数的子对象调用父对象的方法
- macos - 如何从主机上 docker exec 的 pid 检索 docker 容器名称(MacOS)
- javascript - 如何检查 div 是否溢出 React 中的页面?
- azure - 适用于 Raspberry Pi 4 的 Azure IoT Central 设备模板
- spring - 响应中未返回 Spring Access-Control-Allow-Origins
- c - 创建具有未知链接数的结构节点
- apache-spark - spark 2.4.4 shuffle 数据似乎没有清理干净
- scala - 在容器中使用 Jsoupbrowser 的代理身份验证问题
- php - Laravel Lighthouse 配置 - 无法找到可发布的资源
- nodatime - 如何确保 NodaTime 对象始终“字符串化”为 ISO 格式?