Sql 如何获取上一个月的数据和当月的最新数据
在编写查询时需要帮助以获取上个月的数据以及本月至今的数据 如果今天的日期是2011年3月23日,我需要检索上个月的数据以及截至今天的数据(指2011年3月23日) 如果日期为2011年4月3日,数据应包括3月份数据和截至2011年4月3日的数据 谢谢 沙什拉Sql 如何获取上一个月的数据和当月的最新数据,sql,sql-server,tsql,sql-server-2008,Sql,Sql Server,Tsql,Sql Server 2008,在编写查询时需要帮助以获取上个月的数据以及本月至今的数据 如果今天的日期是2011年3月23日,我需要检索上个月的数据以及截至今天的数据(指2011年3月23日) 如果日期为2011年4月3日,数据应包括3月份数据和截至2011年4月3日的数据 谢谢 沙什拉 后退一个月,减去当前日期的天数,再加上一天 WHERE DateField <= GetDate() AND DateField >= DateAdd( mm, -1, Dat
后退一个月,减去当前日期的天数,再加上一天
WHERE
DateField <= GetDate() AND
DateField >= DateAdd(
mm,
-1,
DateAdd(dd, -1*DatePart(dd, GetDate())+1, GetDate())
)
所以很可能
WHERE dateColumn >= DATEADD(month, datediff(month, 0, getdate())-1, 0)
AND dateColumn < DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1)
其中dateColumn>=DATEADD(月,datediff(月,0,getdate())-1,0)
和dateColumn
从表1中选择第1列、第2列
其中DateColumn=DATEADD(dd,-(DAY)(DATEADD(mm,1,GetDate())-1),DATEADD(mm,-1,GetDate()))
编辑:+1至Russel Steen。在我知道他已经发帖之前,我已经发帖了。不准确-第二条给出了“2011-02-01 10:55:49.160”很好,我喜欢datediff解决方案。谢谢你给我链接。真的很有用。
DateField >= Cast( Floor( Cast( (DateAdd(
mm,
-1,
DateAdd(dd, -1*DatePart(dd, GetDate())+1, GetDate())
)) AS FLOAT ) ) AS DATETIME )
Today including time info : getdate()
Today without time info : DATEADD(DAY, DATEDIFF(day, 0, getdate()), 0)
Tomorrow without time info : DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1)
Beginning of current month : DATEADD(month, datediff(month, 0, getdate()), 0)
Beginning of last month : DATEADD(month, datediff(month, 0, getdate())-1, 0)
WHERE dateColumn >= DATEADD(month, datediff(month, 0, getdate())-1, 0)
AND dateColumn < DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1)
Select Column1, Column2 From Table1
Where DateColumn <= GetDate() AND
DateColumn >= DATEADD(dd, - (DAY(DATEADD(mm, 1, GetDate())) - 1), DATEADD(mm, - 1, GetDate()))