Подтвердить что ты не робот

Sql delete, где дата больше 30 дней

Я хочу найти инструкцию SQL, которая при выполнении удаляет поля, которые старше, чем 30 дней.

В моих "событиях" таблицы есть поле "дата", которое содержит дату и время, в которое она была вставлена ​​в базу данных.

Сейчас меня нет дома, поэтому я не могу это проверить. это хорошо?

SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())
4b9b3361

Ответ 1

Используйте DATEADD в своем предложении WHERE:

...
WHERE date < DATEADD(day, -30, GETDATE())

Вы также можете использовать аббревиатуру d или dd вместо day.

Ответ 2

Хотя DATEADD, вероятно, самый прозрачный способ сделать это, стоит отметить что просто getdate()-30 также будет достаточно.

Кроме того, вы ищете 30 дней, т.е. включая часы, минуты, секунды и т.д.? Или 30 дней с полуночи сегодня (например, 12/06/2010 00: 00: 00.000). В этом случае вы можете подумать:

SELECT * 
FROM Results 
WHERE convert(varchar(8), [Date], 112) >= convert(varchar(8), getdate(), 112)

Ответ 3

Вы также можете установить между двумя датами:

Delete From tblAudit
WHERE Date_dat < DATEADD(day, -360, GETDATE())
GO
Delete From tblAudit
WHERE Date_dat > DATEADD(day, -60, GETDATE())
GO

Ответ 4

Вместо того, чтобы преобразовать в varchar, чтобы получить только день (convert (varchar (8), [Date], 112)), я предпочитаю хранить его в поле datetime и делать его только датой (без времени).

SELECT * FROM Results 
WHERE CONVERT(date, [Date]) >= CONVERT(date, GETDATE())

Ответ 5

Вы также можете использовать

SELECT * from Results WHERE date < NOW() - INTERVAL 30 DAY;