2012-06-06 2 views
0

Я хочу удалить все записи из определенных дат, но в моем поле даты у меня также есть время.УДАЛИТЬ по дате, есть ли подстановочный знак?

Есть ли что-то вроде шаблона, который я мог бы использовать? как:

DELETE FROM table WHERE time='01.01.2010 WILDCARD'; 

время будет где я писал WildCard

ответ

4

Используйте DATE() функцию.

DELETE FROM table WHERE DATE(time) = '2010-01-01'

+0

Это работает, спасибо, может принять за 10 минут. – user990767

+0

Рад помочь :) – xdazz

+0

Увы, это не может использовать индекс за «время». – glglgl

1

Чтобы effecively использовать любой индекс на DateTimeColumn:

DELETE FROM table 
WHERE DateTimeColumn >= '2010-01-01' 
    AND DateTimeColumn < '2010-01-02' ; 
0

Я хотел бы предложить использовать BETWEEN:

DELETE FROM table 
WHERE DateTimeColumn BETWEEN '2010-01-01 00:00:00' AND '2010-01-01 23:59:59'; 

соотв. 23:59:61, так как я не знаю, будет ли MySQL обрабатывать прыжки секунд соответственно.

Кроме того, я хотел бы предложить, чтобы изменить ybercube's answer и сделать

DELETE FROM table 
WHERE DateTimeColumn >= '2010-01-01 00:00:00' 
    AND DateTimeColumn < '2010-01-02 00:00:00'; 

Обратите внимание, что я не уверен, если это второе решение полностью эквивалентно одной ybercube, либо, если есть какое-либо различие в некоторых случаях, такие как преобразование проблемы или задержки между форматом даты и даты.

Смежные вопросы