【问题标题】:SQL get First day of month 3 months before current MonthSQL获取当前月份前3个月的第一天
【发布时间】:2016-01-07 13:28:44
【问题描述】:

我正在尝试选择当前日期前 3 个月的第一天。

例如,如果当前日期是:'2015-11-08' 我的结果是:'2015-08-01'

如果是 yyyy-mm-dd 格式,我会更喜欢。

我尝试过这个开始,但没有运气:

SELECT DATEADD(dd, -DAY('2015-09-01') + 1, @today)

我尝试了很多东西,但似乎无法破解它,任何建议或帮助将不胜感激。提前谢谢你

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。另外,请展示您的尝试。
  • 别担心,搞定了。
  • 你尝试过什么,哪里失败了? (我对最后一部分有我的想法)
  • 我一直在尝试使用 'SELECT DATEADD(dd, -DAY('2015-09-01') + 1, @today)'

标签: sql sql-server date


【解决方案1】:

逻辑很简单:

  • 从日期减去月份中的某天减去 1 天
  • 减去三个月

在 SQL Server 中:

select dateadd(month, -3, dateadd(day, 1 - day(dte), dte))

对于当前日期:

select cast(dateadd(month, -3, dateadd(day, 1 - day(getdate()), getdate())) as date)

作为一个字符串:

select convert(varchar(10),
               dateadd(month, -3, dateadd(day, 1 - day(getdate()), getdate())),
               120)

【讨论】:

  • 这对我帮助很大,完美。
  • 谢谢 Gordon,我没有遇到 Day 函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2016-12-26
  • 1970-01-01
相关资源
最近更新 更多