获取给定日期sql的前一个月

时间:2012-10-05 07:40:22

标签: sql

我有这个:

select company
from alldata
where **{previous month of date("01.05.2011")}**
IN
(select month from alldata where SumNrSpot=0)

我需要在where clouse中找到上个月。 拜托,有人可以帮忙吗?

6 个答案:

答案 0 :(得分:3)

如果您使用的是MySQL:

SELECT MONTH(DATE_SUB('2011-05-01', 1 MONTH))

在你的情况下

select company
from alldata
where MONTH(DATE_SUB('2011-05-01', 1 MONTH))
IN
(select month from alldata where SumNrSpot=0)

详细了解两个函数here

答案 1 :(得分:1)

您可以将DateAdd()方法与参数,月份和-1一起用作上个月的值。

以下会给你

select DatePart(mm,DateAdd(m,-1,GetDate())) as PreviousMonth

对于您的查询,您可以尝试:

select company 
from alldata
where datepart(mm,dateadd(m,-1,Convert(DateTime, Convert(DateTime,'01.05.2011',104))))
IN (select month from alldata where SumNrSpot=0)

答案 2 :(得分:1)

对于 SQL Server

您可以使用功能MONTH()从某个日期开始一个月 您可以使用DATEADD(月,-1,)按月调整日期 如果以文本形式向SQL Server提供日期,则应始终使用YYYYMMDD格式。

where MONTH(DATEADD(month,-1,'20110501') IN

假设表格列alldata.month包含1-12的月份数值。

答案 3 :(得分:0)

从给定日期提取月份并添加-1

select ( extract (month from now()) -1 ) as previous_month 

答案 4 :(得分:0)

Select
DATEPART(mm,(DATEADD(m,-1,CONVERT(DATETIME,'01.05.2011')))) AS PreviousMonth
IN 
(Select month from alldata where SumNrSpot=0)

假设您的“月”列是整数值

答案 5 :(得分:0)

我是这样做的:

select company
from alldata
where MONTH(`Mon`) -1
IN
(select MONTH(Mon) from alldata where SumNrSpot=0)

非常感谢,您的一些回复非常有用并受到赞赏。