![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Loginanton |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 8.11.2007 Репутация: нет Всего: нет |
всем доброго время суток. такой вопрос: как из бд удалить все строки, дата создания которых отличается от текущей больше чем на 24 часа. дата создания - отдельная ячейка типа datetime, текущую дату получаю с помощью date('Y-m-d H:i:s'). заранее благодарен за помощь
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
||||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Вообще, дату лучше в числах хранить. Unix Time так называемый. Ну или в другой форме. ТОгда все просто становится, ибо числа сравнивать намного проще.
|
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 3 Всего: 37 |
Mal Hack, учитывая, что в большинстве баз данных есть встроенные функции для работы с полями типа "дата" (причем не ограниченными узким промежутком в 70 лет), то совет хранить время в секундах получится не очень полезным. Для такой простой задачи, как у автора, формат может быть любой. А если, скажем, надо работать с днями рождения, то unixtime задаст нам серьезную головоломку.
Loginanton, в это трудно поверить, но в документации к функции date есть пример, как получить дату, которая отличается текущей на 24 часа |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
А теперь подумайте, что будет быстрее, при поиске по таблице ячеек удовлетворяющих дате при сравнении чисел или при вызове каждый раз специальной фукции. Для простой задачи и надо использовать самые простые методы.
А это уже другая задача. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 3 Всего: 37 |
Я думаю, одинаково. В любом случае выражение надо составлять так, чтобы вычисления производились один раз при парсинге запроса, а результат сравнивался со значением поля. Иначе не будут работать индексы, а ведь именно их наличие в первую очередь влияет на скорость. Мне кажется слишком расточительным держать два разных поля для одих и тех же данных. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Где вы увидели у автора дополнительное поле????? Неправильно. Никогда вызов функции не будет быстрее или сравним по скорости со сравнением чисел. В Условии... ДАже если вы будете в условии писать сравнение типов datatime, то это все равно будет медленнее, ибо мискул будет последовательно сравнивать значения байтов, относящихся к конкретного смысловому значению (год, месяц) и т.п. Т.е. вы будете иметь в 3 раза больше операций сравнения, плюс еще во внутренней функции (скорее всего), которую сами явно вызывать не будете. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 3 Всего: 37 |
Мне так не кажется. То есть, я, во-первых, не вижу смысла сравнивать по-очереди, когда можно сравнить разом. А во-вторых, мне все это кажется экономией на спичках. К тому же, насколько я понимаю, mysql физически хранит datetime в виде числа, то есть, спорить и вовсе не о чем. Учитывая ограничения unixtime, я бы не стал рекомендовать такой вариант хранения даты, как более предпочтительный. Наоборот, я бы рекомендовал по умолчанию выбирать из встроенных типов данных, а время в секундах - в специфических случаях, только при наличии веских причин. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |