Запросить запрос для удаления данных время от времени - PullRequest
1 голос
/ 24 января 2012

У меня есть БД в SQL 2008 с 40 таблицами:

На каждой таблице есть столбец DateTime в диапазоне от

2010-01-01 09: 00: 00.000 до 2012-01-23 22: 00: 00.000

Мне нужен запрос для удаления данных для всех таблиц только во временном диапазоне от 17: 31: 00.000 до 22: 00: 00.000

Результат будет иметь те же дни, что и сейчас, но с интервалом времени от 09: 00: 00.000 до 17: 30: 00.000

Помогите мне с этим.

Большое спасибо

1 Ответ

2 голосов
/ 24 января 2012
DELETE FROM YourTable
WHERE CAST(DateTimeColumn AS TIME) BETWEEN '17:31' AND '21:59'

Для всех таблиц используйте это:

EXEC sp_msforeachtable N'DELETE FROM ? WHERE CAST(DateTimeColumn AS TIME) BETWEEN ''17:31'' AND ''21:59'''

Но Я сомневаюсь, что ВСЕ ваши таблицы имеют одинаковый столбец 8 -)

Если вы хотите проверить, какие ошибки возникли во время выполнения, попробуйте следующее:

EXEC sp_msforeachtable N'PRINT ''?''; BEGIN TRY DELETE FROM ? WHERE CAST(DateTimeColumn AS TIME) BETWEEN ''17:31'' AND ''21:59''; END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...