【问题标题】:Select the first and the last day of a month in sql server for a month already stored in SQL Database在sql server中选择一个月的第一天和最后一天为已经存储在SQL数据库中的一个月
【发布时间】:2015-10-27 08:22:11
【问题描述】:

对此我有一个小想法,但我不知道如何在 sql server (MSDN) 中解释它。

if (Month < ActualMonth)
{
  (StartDateReq = FirstDayMonth);
  (EndDatereq) = LastDayMonth);
}
else if (Month = currenTimeStamp)
 {
  (EndDateReq = currentTimeStamp);
 }

【问题讨论】:

  • 试着用英语描述你想要的。
  • 您要选择所有日期为上个月+今天的日期的行吗?
  • 如果月份(在数据库中)低于实际月份,我只想拥有第一天和最后一天
  • 例如:我们在 10 月,但在数据库中我有 9 月。我只想拥有 2015 年 1 月 9 日和 2015 年 9 月 30 日。如果在数据库中我们还有一个数据是 10 月,我想只有当天

标签: c# sql sql-server msdn


【解决方案1】:

如果您在 SQL Server 中有日期,则可以使用以下方法获取该月的第一天和最后一天:

select dateadd(day, 1 - day(datecol), datecol) as firstday,
       dateadd(day, -1, dateadd(month, 1, dateadd(day, 1 - day(datecol), datecol))) as lasstday

在 SQL Server 2012+ 中,您可以使用函数 EOMONTH() 表示当月的最后一天。

【讨论】:

    【解决方案2】:

    借鉴戈登的回答:

    DECLARE @myDate Date = '2015-10-25'
    
    select DATEADD(DAY, 1 - DAY(@myDate), @myDate) as firstday,
           CASE WHEN YEAR(@myDate) = YEAR(GETDATE()) AND 
                     MONTH(@MyDate) = MONTH(GETDATE()) 
           THEN @MyDate
           ELSE DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY(@myDate), @myDate))) 
           END as lasstday
    

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 2010-11-06
      • 2011-01-04
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多