Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 1,885
#1

Удаление записи часовой давности - PHP БД

24.06.2016, 11:45. Просмотров 183. Ответов 16
Метки нет (Все метки)

Подскажите как из бд удалить запись часовой давности, пробую вот так
PHP
1
mysql_query("DELETE FROM `test` WHERE `dt` < (NOW() - INTERVAL 1 HOUR)");
но оно удаляет даже те записи что только что добавлены
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2016, 11:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удаление записи часовой давности (PHP БД):

Удаление записи из БД
Есть БД &quot;Photos&quot; с таблицей &quot;modphotos&quot; которая имеет такую структуры (id,...

Удаление записи из БД
&lt;?php /* Соединяемся с базой данных */ $hostname = &quot;localhost&quot;; //...

Удаление записи
Здравствуйте!:) Помогите, пожалуйста!:help: Я создала таблицу news в...

Удаление записи из БД
Помогите с удалением записей в БД. Мне нужно что б напротив каждой записи стоял...

Удаление записи из базы
проблема с удалением записи из базы данных ! задал интервал одну минуту (ниже...

Удаление записи php
Всем привет. Знаю что подобные темы уже существуют, но решение я не нашел....

16
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 11:49 #2
MySQL
1
...... WHERE (unix_timestamp() - unix_timestamp(`dt`)) > 3600 ;
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 1,885
24.06.2016, 11:51  [ТС] #3
все равно удаляет даже то что пару минут назад записано
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 11:55 #4
проверьте что там вообще хранится, в этой "dt"
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 1,885
24.06.2016, 11:56  [ТС] #5
2016-06-24 08:55:46 вот к примеру последняя запись, это серверное время...
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 11:57 #6
а с часовыми поясами у вас все ок?
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 1,885
24.06.2016, 11:59  [ТС] #7
сервер сам в германии стоит и скрипты как я понял тоже по тому же времени записывают, в начале скрипта например стоит

PHP
1
date_default_timezone_set('UTC');
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 12:05 #8
Цитата Сообщение от Nebiros Посмотреть сообщение
в начале скрипта например стоит
мускула? или это все-таки установка часового пояса для сервера пхп?
у мускула своя настройка часового пояса.
можно проверить, какое время у мускула запросом
MySQL
1
 select now();
можно попробовать тупо проверить, что там в реальности получается за разница:
MySQL
1
SELECT `dt`, (unix_timestamp() - unix_timestamp(`dt`)) AS `diff` FROM `test`;
должно показать два столбца - сам штамп времени вписаный в базе в колонку `dt`, и `diff` - разницу в секундах между "текущим временем" мускула и значением, записанным в `dt`.
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 1,885
24.06.2016, 12:07  [ТС] #9
от последней записи разница 8084, запись 2016-06-24 08:51:47, время устанавливается в пхп, как мне тогда в этой ситуации поступить?
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 12:09 #10
Лучший ответ Сообщение было отмечено Nebiros как решение

Решение

или установить часовой пояс для мускула, или в базу писать время запросами типа NOW();
1
Custos
189 / 174 / 30
Регистрация: 23.09.2014
Сообщений: 631
24.06.2016, 12:14 #11
Nebiros, всегда храните дату/время в timestamp и не будет проблем.
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 12:17 #12
Цитата Сообщение от Custos Посмотреть сообщение
и не будет проблем.
время пыха (в консоли сервера):
PHP
1
php -r 'echo date("r",time())."\n";'
время мускула (в консоли мускула):
MySQL
1
 select now();
и если они отличаются, то проблемы МОГУТ ИМЕТЬ МЕСТО
0
Custos
189 / 174 / 30
Регистрация: 23.09.2014
Сообщений: 631
24.06.2016, 12:39 #13
Dmitry, зачем сравнивать php-шную time (которая возвращает timestamp в int'е) и NOW() в MySQL, которая возвращает строку? Конечно они будет различаться, так как это совсем разные вещи.
Если уж сравнивать, то не NOW(), а UNIX_TIMESTAMP()
Ах да, если значения time() и UNIX_TIMESTAMP() различаются, то значит админы зря едят свой хлеб.
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 12:44 #14
Custos, если вы не понимаете, о чем идет речь, может стоит немного подоумать, перед тем как что-то.....
Bash
1
2
 php -r 'echo date("r",time())."\n";'
Fri, 24 Jun 2016 12:40:13 +0300
MySQL
1
2
3
4
5
6
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-06-24 12:40:19 |
+---------------------+
так вот, если часовые пояса у пхп и у мускула будут установлен РАЗНЫЕ, то проблемы МОГУТ БЫТЬ, СВИДЕТЕЛЬСТВОМ ЧЕГО КАК РАЗ И ЯВЛЯЕТСЯ ЭТА ТЕМА! У ТС по идее время для записи в базу формирует пхп, а потом он сравнивает его со временем, которое мускул отдает по now(). из мелочей, у него набегает там более 8 тысяч секунд разницы! рассказать откуда, или итак дойдет?
0
Custos
189 / 174 / 30
Регистрация: 23.09.2014
Сообщений: 631
24.06.2016, 12:53 #15
Цитата Сообщение от Dmitry Посмотреть сообщение
Custos, если вы не понимаете, о чем идет речь, может стоит немного подоумать, перед тем как что-то.....
Подумать, видимо, стоит Вам.
Цитата Сообщение от Custos Посмотреть сообщение
Nebiros, всегда храните дату/время в timestamp и не будет проблем.
unix timestamp - количестве секунд прошедших с 1970 года.
Теперь вопрос - при чем тут date("r",time()) и NOW() ?
Мы храним время в секундах и нам плевать на часовые пояса.
0
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10504 / 6007 / 437
Регистрация: 09.09.2009
Сообщений: 23,715
24.06.2016, 13:17 #16
последняя попытка.
"вы храните то, что записали"
вот два запроса:
Bash
1
2
dmitry@test-server:~$ php -r 'echo date("r",time())."\n";'
Fri, 24 Jun 2016 13:04:03 +0300
и
Bash
1
2
php -r 'date_default_timezone_set("UTC"); echo date("r",time())."\n";'
Fri, 24 Jun 2016 10:05:03 +0000
Добавлено через 9 минут
извиняюсь, НЕ ПРАВ!
0
Custos
189 / 174 / 30
Регистрация: 23.09.2014
Сообщений: 631
24.06.2016, 13:18 #17
Dmitry, Вы усердно не хотите меня слышать. Речь шла о том, что я предлагал автору хранить время в unix timestamp, так как это на много удобнее. Вы же завели разговор вообще о другом. То, что часовые пояса могут различаться - понятно и идиоту. Вы решили побыть Кепом?
0
24.06.2016, 13:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2016, 13:18
Привет! Вот еще темы с решениями:

Удаление Записи из Таблицы (БД)
Есть у меня код &lt;table class=&quot;primary-table&quot;&gt; &lt;tr&gt; &lt;td...

Удаление записи из таблицы
:help:делаю администриование в исходном файле: &lt;h2&gt;Информация о клиентах...

Удаление записи из БД по вводимому номеру
Всем привет, Кто подскажет , какой код добавить, чтобы при в ведение в поле :...

Как реализовать удаление записи?
Здравствуйте, есть запрос который выводит нужную информацию в таблицу. Я хотел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru