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

Удаление элементов старше дня - SQL Server

В таблице в моем datatase у меня есть столбец данных, в котором хранится время, в которое добавлена ​​запись. Как я могу удалить все записи, которые старше дня, когда я запускаю хранимую процедуру (учитывая текущее время)?

4b9b3361

Ответ 1

Вы можете создать оператор DELETE, используя dateiff и getdate.

Пример использования:

DELETE FROM yourTable WHERE DATEDIFF(day,getdate(),thatColumn) < -1

Ответ 2

Когда дело доходит до SQL, вы должны указать, что вы подразумеваете под "старше дня".

  • DATEDIFF: он использует полуденную границу дня, поэтому запустите его 19 октября 00:05, и вы удалите строки 6 минут (18 октября 23:59)

  • 24 часа?

  • Вчера полночь? Выполнить код 19 октября, удалить строки до 18-го?

Кроме того, не помещайте функцию в столбец.

Это предполагает 24 часа до минуты:

DELETE
    MyTableWhere
WHERE
    MyColumn < DATEADD(day, -1, GETDATE())

Это предполагает, что вчера полночь:

DELETE
    MyTableWhere
WHERE
    MyColumn < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -1)

Ответ 3

Delete <TableName>
Where DATEDIFF(day, <ColumnName>, getdate()) > 0

Раджа

Ответ 4

Обычно я рекомендую не удалять данные из вашей базы данных, потому что вы никогда не знаете, когда вам может понадобиться вернуться и восстановить или отменить предыдущие записи из-за повреждения данных или аудита и т.д. Вместо этого я бы добавил заголовок заголовка немного как "IsDeleted", и установить записи дня дня в true с помощью оператора обновления.

Что-то вроде

'UPDATE tablename SET IsDeleted = 1 WHERE (DATEDIFF(day,DateCreatedOn,GETDATE()) > 0)

Где DateCreatedOn, где ваша запись, созданная в дату или дата отметки времени, будет

Ответ 5

Предполагая, что столбец даты будет "RecordCreatedDate"

УДАЛИТЬ ОТ вашей таблицы WHERE RecordCreatedDate < DATEADD (d, -1, GETDATE())

Я только предостерегаю, что если ваша база данных имеет миллионы строк, у вас должен быть индекс в столбце RecordCreatedDate и, возможно, мелкие групповые удаления, если вы будете удалять большие объемы данных.

Ответ 6

удалить из вашей таблицы, где DateColumn < GETDATE() - 1

Ответ 7

или

ts >= now() - INTERVAL 1 DAY

где ts - имя столбца datetime