11

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

4

6 回答 6

38

这应该这样做:

--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))
于 2013-02-28T20:29:53.053 回答
0

这是我的解决方案

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))
于 2013-02-28T20:47:15.967 回答
0

上个月的第一天

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

上个月的最后一天

convert (date,DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)))
于 2014-11-11T10:08:28.377 回答
0

以下代码适用于 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*/
于 2021-12-01T19:08:23.013 回答
0
  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 )
    
于 2021-12-29T02:16:56.917 回答
-1

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

SELECT DATE_SUB(CURDATE(),INTERVAL Extract(DAY from now()) DAY);
于 2015-06-02T23:47:51.087 回答