【问题标题】:how to get the first day and the last of previous month using sql如何使用sql获取上个月的第一天和最后一天
【发布时间】:2013-02-15 04:48:44
【问题描述】:

我想得到上个月的第一天,比如 2013 年 1 月 1 日,我也想得到上个月的最后一天,比如 2013 年 1 月 31 日。如果我们在三月,那么我想做同样的事情,比如 02/01/2013 和 02/28/2013 等等...... 谢谢

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

应该这样做:

--First day of last month
SELECT DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0))
--Last day of last month
SELECT DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))

【讨论】:

    【解决方案2】:

    这是我的解决方案

    DECLARE @Today DATETIME
    SELECT @Today = GETDATE()
    
      update  Test.dbo.DateTable
      set StartDate = (
    SELECT convert (varchar, DATEADD(dd,-(DAY(DATEADD(mm,1,@Today))-1),DATEADD(mm,-1,@Today)),101))
    
    update Test.dbo.DateTable
    set EndDate = (
    SELECT convert(varchar, DATEADD(dd, -DAY(DATEADD(m,1,@Today)), DATEADD(m,0,@Today)),101))
    

    【讨论】:

      【解决方案3】:

      上个月的第一天

      convert (date,DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)) 
      

      上个月的最后一天

      convert (date,DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)))
      

      【讨论】:

        【解决方案4】:

        以下代码在 SQL Server 中工作

        SELECT CONVERT(VARCHAR(8), (DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)), 1) [First day] /*First date of previous month*/
            ,CONVERT(VARCHAR(8), (DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, GETDATE()), 0))), 1) [Last day] /*Last date of previous month*/
        

        【讨论】:

          【解决方案5】:
          1. 上个月的第一天和最后一天:

            DATEADD ( DAY , 1 , EOMONTH ( GETDATE ( ) , - 2 ) ) 
            EOMONTH ( GETDATE ( ) , - 1 )
            
          2. 当月的第一天和最后一天:

            DATEADD ( DAY , 1 , EOMONTH ( GETDATE ( ) , - 1 ) )
            EOMONTH ( GETDATE ( ) , 0 )
            
          3. 下个月的第一天和最后一天:

            DATEADD ( DAY , 1 , EOMONTH ( GETDATE ( ) , 0 ) )
            EOMONTH ( GETDATE ( ) , 1 )
            
          4. 第 N 个月的第一天和最后一天:

            DATEADD ( DAY , 1 , EOMONTH ( GETDATE ( ) , N-1 ) )
            EOMONTH ( GETDATE ( ) , N )
            

          【讨论】:

            【解决方案6】:

            以下查询用于在我的旧 MySQL 中查找上个月的最后一天:

            SELECT DATE_SUB(CURDATE(),INTERVAL Extract(DAY from now()) DAY);
            

            【讨论】:

            • 问题被标记为“SQL Server”
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-09-06
            • 1970-01-01
            • 2015-04-03
            • 2013-11-25
            • 2014-03-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多