Что мне нужно сделать
Мне нужно иметь возможность проверить мою базу данных MYSQL, чтобы увидеть, имеет ли запись начало datetime
, которое происходит в выбранном списке дат.Могут быть пробелы в диапазонах дат, поэтому я не могу просто использовать простое field >= '12-12-2000 00:00:00 AND field < 12-20-2000 00:00:00
.
У меня в голове два решения, но у меня недостаточно фактических данных, чтобы проверить, действительно либыло бы более эффективно использовать оператор IN или объединять несколько операторов AND для выполнения проверок.
В настоящее время мой мыслительный процесс приводит меня к двум вариантам.
с использованиемIN
SELECT * FROM myTable WHERE
CAST(datefield as Date) IN ('12-12-2000', '12-13-2000', '12-15-2000', '12-20-2000');
Использование составных операторов AND
SELECT * FROM myTable WHERE
(datefield >= '12-12-2000 00:00:00' AND datefield < '12-13-2000 00:00:00')
OR
(datefield >= '12-13-2000 00:00:00' AND datefield < '12-14-2000 00:00:00')
OR
(datefield >= '12-15-2000 00:00:00' AND datefield < '12-16-2000 00:00:00')
OR
(datefield >= '12-20-2000 00:00:00' AND datefield < '12-21-2000 00:00:00')
Это два варианта, которые я придумал, однако я уверен, что естьЕсть более опытные разработчики SQL, которые имеют лучшие способы делать то, что я пытаюсь сделать.Я читал, что приведение происходит медленнее, чем просто И заканчивая дату и время начала, но я не уверен, будет ли это применимо, даже если у меня может быть 5-30 дат для проверки на запрос.