В таблице в моем datatase у меня есть столбец данных, в котором хранится время, в которое добавлена запись. Как я могу удалить все записи, которые старше дня, когда я запускаю хранимую процедуру (учитывая текущее время)?
Удаление элементов старше дня - SQL Server
Ответ 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