Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удаление просроченных записей из базы данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
netclan
Отправлено: 18 Марта, 2014 - 10:49:12
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




Здравствуйте уважаемые форумчане!
В базе есть таблица `com` c полем `date`(varchar(16))
Хочу удалить все записи срок публикации которых истек(сама запись в базе имеет такой вид: 18.03.2013 10:10)
я пробую удалить следующим образом:
CODE (SQL):
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM `com` WHERE `date` < '".date("d.m.Y H:i")."'");

при этом данные не удаляются, подскажите как можно удалить устаревшие записи? Не понял


-----
O_o
 
 Top
EuGen Администратор
Отправлено: 18 Марта, 2014 - 10:54:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Формат неверный. В MySQL дата записывается как YYYY-MM-DD HH:MM:SS

PHP:
скопировать код в буфер обмена
  1. 'DELETE FROM `com` WHERE `date` <  "'.date('Y-m-d H:i').':00"';



Либо же можно использовать NOW() (если секунды не важны):

CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM `com` WHERE `date` <  NOW()


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
netclan
Отправлено: 18 Марта, 2014 - 11:28:32
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




[quote=EuGen][/quote]
Если сделать так, то удалятся все записи и старые и новые(т.е. если дата еще не наступила)!

Сама запись в таблице даты имеет вид: 18.03.2013 10:10


-----
O_o
 
 Top
esterio
Отправлено: 18 Марта, 2014 - 11:43:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




да потому что у Вас тип поля varchar вместо date. Такого не стоит делать.
Может это поможет
http://stackoverflow[dot]com/questio[dot][dot][dot]-varchar-to-date
 
 Top
difight
Отправлено: 18 Марта, 2014 - 11:44:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




так а поле date что хранит в базе? дату до какой публиковать или дату добавления?
 
My status
 Top
Flash_PR
Отправлено: 18 Марта, 2014 - 11:50:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013  
Откуда: Санкт-Петербург


Помог: 6 раз(а)




difight пишет:
так а поле date что хранит в базе? дату до какой публиковать или дату добавления?

Походу до какой публиковать.
А вообще нет слов, хранить дату-время в варчаре когда есть специальный тип, теперь ТС плоды пожинает.

(Отредактировано автором: 18 Марта, 2014 - 11:52:06)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB