如何使用sql获取上个月的第一天和最后一个月

时间:2013-02-28 20:22:43

标签: sql sql-server tsql

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

4 个答案:

答案 0 :(得分:27)

这应该这样做:

--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))

答案 1 :(得分: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))

答案 2 :(得分:0)

上个月的第一天

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

上个月的最后一天

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

答案 3 :(得分:-1)

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

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