Я хочу получить записи за последний месяц, основываясь на моей таблице в базе данных [member] поле "date_created".
Что такое sql для этого?
Для уточнения, в прошлом месяце - с 8 января 2009 года по 31 марта 2009 года
Если сегодня 3/1/2010, мне нужно получить записи с 1 января 2009 года по 31 декабря 2009 года.
select * from [member] where DatePart("m", date_created) = DatePart("m", DateAdd("m", -1, getdate())) AND DatePart("yyyy", date_created) = DatePart("yyyy", DateAdd("m", -1, getdate()))
WHERE date_created >= DATEADD(MONTH, DATEDIFF(MONTH, 31, CURRENT_TIMESTAMP), 0) AND date_created < DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP), 0)
DECLARE @StartDate DATETIME, @EndDate DATETIME SET @StartDate = DATEADD(mm, DATEDIFF(mm, 0, getdate()) - 1, 0) SET @EndDate = dateadd(dd, -1, DATEADD(mm, 1, @StartDate)) SELECT * FROM Member WHERE date_created BETWEEN @StartDate AND @EndDate
и еще одно обновление до решения mrdenny. Это также дает точный последний день предыдущего месяца.
Простой запрос, который работает для меня:
выберите * из таблицы, где DATEADD (месяц, 1, DATEFIELD)> = getdate ()
Если вы ищете в прошлом месяце, попробуйте это,
SELECT FROM #emp WHERE DATEDIFF(MONTH,CREATEDDATE,GETDATE()) = 1
SELECT FROM #emp WHERE DATEDIFF(day,CREATEDDATE,GETDATE()) between 1 and 30
Способ устранения подобной проблемы заключался в добавлении Месяца к моей SELECT порции
Month DATEADD(day,Created_Date,'1971/12/31') As Month
и чем я добавил ГДЕ утверждение
Month DATEADD(day,Created_Date,'1971/12/31') = month(getdate())-1
DECLARE @StartDate DATETIME, @EndDate DATETIME SET @StartDate = dateadd(mm, -1, getdate()) SET @StartDate = dateadd(dd, datepart(dd, getdate())*-1, @StartDate) SET @EndDate = dateadd(mm, 1, @StartDate) set @StartDate = DATEADD(dd, 1 , @StartDate)
DECLARE @curDate INT = datepart( Month,GETDATE()) IF (@curDate = 1) BEGIN select * from Featured_Deal where datepart( Month,Created_Date)=12 AND datepart(Year,Created_Date) = (datepart(Year,GETDATE())-1) END ELSE BEGIN select * from Featured_Deal where datepart( Month,Created_Date)=(datepart( Month,GETDATE())-1) AND datepart(Year,Created_Date) = datepart(Year,GETDATE()) END
На сервере Sql за последний месяц:
select * from tablename where order_date > DateAdd(WEEK, -1, GETDATE()+1) and order_date<=GETDATE()