2012-10-05 28 views
0

的前一個月我有這樣的:獲取給定日期的SQL

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

我需要找到上月在where克勞斯。 請有人幫忙嗎?

回答

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

對於SQL服務器

您可以只使用功能MONTH()擺脫一個月一個約會。
您可以使用DATEADD(月,-1,)將日期調整一個月。
如果以文本形式向SQL Server呈現日期,則應始終使用格式YYYYMMDD。

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

這是假設表列alldata.month包含從1-12的月份的數值。

+0

你在開始時建議'DATEADD(month,-1,...)',但你的例子顯示'DATEADD(month,1,...)'。順便說一下,他們可能會使用MySQL,通過日期(...)和雙引號來判斷。 –

+0

你說得對,你說得對。增加了一個免責聲明 – RichardTheKiwi

0

自定日期和提取物添加一個月-1

select (extract (month from now()) -1) as previous_month 
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

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

假設你的「月」列是一個整數值

0

我就是這麼做的:

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

還是要謝謝你,你的一些答覆是有益的和讚賞。

相關問題