0

我有这个:

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

我需要在whereclouse 中找到上个月。请问,有人可以帮忙吗?

4

6 回答 6

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)

在此处阅读有关这两个功能的更多信息。

于 2012-10-05T07:46:48.297 回答
1

对于SQL 服务器

您可以使用函数MONTH()从日期中获取一个月。
您可以使用 DATEADD(month,-1,) 将日期调整一个月。
如果您以文本形式向 SQL Server 提供日期,则应始终使用格式 YYYYMMDD。

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

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

于 2012-10-05T07:43:32.837 回答
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)
于 2012-10-05T07:42:30.137 回答
0

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

select ( extract (month from now()) -1 ) as previous_month 
于 2012-10-05T07:45:36.033 回答
0
Select
DATEPART(mm,(DATEADD(m,-1,CONVERT(DATETIME,'01.05.2011')))) AS PreviousMonth
IN 
(Select month from alldata where SumNrSpot=0)

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

于 2012-10-05T07:55:23.663 回答
0

我是这样做的:

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

无论如何,谢谢,您的一些回复很有用和赞赏。

于 2012-10-05T10:47:22.220 回答