Обрезка в SQL Server

У меня есть таблица, в которой более 90 миллионов строк, она содержит данные более 3 лет. Я хочу сохранить все записи, добавленные в понедельник (или в любой конкретный день недели), и удалить оставшиеся записи для данных, добавленных годом ранее.

Кто-нибудь может мне с этим помочь?

Сложность, с которой я сталкиваюсь, заключается в сортировке данных, которые были добавлены в понедельник (или в любой конкретный день недели).

2 ответа

Решение

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

DATEPART(dw, '2007-04-21 ') = 2 //  day of the week.

DATENAME(weekday, '2007-04-21 ') = 'Monday'

Больше можно найти https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017

Как сказал Тим, вы можете попробовать

datepart(weekday, your_date) = 2

проверить, является ли дата понедельником (обратите внимание, что 1 - воскресенье). Или даже вы можете попробовать

datename(weekday, your_date) = 'Monday'

установить название дня недели в явном виде

Другие вопросы по тегам