选择上个月sql中的所有日期

时间:2014-01-13 14:19:59

标签: sql sql-server tsql

我怎样才能获得上个月的日期

select * from table where date in ( last month  )

我不想要过去30天 以及如何自动获得上个月

5 个答案:

答案 0 :(得分:1)

select * from table
where month(date)=month(getdate())-1

答案 1 :(得分:1)

您可以使用此

Select * from table where date between @startdate and @enddate

或者

SELECT * FROM DATE_SAMPLE WHERE 
DATEPART(YEAR, SAMPLE_DATE) = '2013' AND 
DATEPART(MONTH,SAMPLE_DATE) = '01' AND 
DATEPART(DAY, SAMPLE_DATE) = '01'

对你有用吗?

答案 2 :(得分:0)

修改

如果你的意思是从上个月开始。或者从特定日期开始的前一个月,您需要做这样的事情

SELECT DATEPART(MONTH, DATEADD(MONTH, -1, [Date]))

或者要获取一年中上个月的记录,你可以做这样的事情

SELECT * FROM Table
WHERE  MONTH(Date) =  DATEPART(MONTH, DATEADD(MONTH, -1, [Date]))
AND YEAR(Date) =    DATEPART(YEAR, DATEADD(MONTH, -1, [Date]))    --<-- or pass year for which year you are checking 

使您的aquery SARGable (建议由t-clausen.dk提供)

select * from table 
where date >=dateadd(m, datediff(m, 0, current_timestamp)-1, 0) 
and date < dateadd(m, datediff(m, 0, current_timestamp)-1, 0)
使用date / datetime数据类型时

Read here more about sargable Queries

答案 3 :(得分:0)

您可以尝试使用between语句来获取特定日期:

Select * from table where date between '01-01-2014' and '14-01-2014'

答案 4 :(得分:0)

假设您希望所有项目的日期在上个月,即在今天和30/31天之前:

Select *
From Table
Where Date Between DATEADD(m, -1, GETDATE()) and GETDATE()