Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL: Округление даты 
:(
    Опции темы
Ripper
Дата 10.5.2012, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



Доброе утро.
У меня в таблице есть дата регистрации, хранящаяся в timestamp. Нужно найти все записи, для которых с момента регистрации прошло полных 7 дней. 
Причем дату регистрации нужно округлить, ну например, пользователь зарегистрирован 5ого мая в 3 часа дня. Нужно чтобы с момента этой даты прошла целая неделя, т.е. 6, 7, 8, 9, 10, 11, 12 числа. 

UPDATE `user` SET `status` = '1' WHERE now() > date_add(regdate, INTERVAL 7 DAY)

Но если я правильно понял то если выполнить этот запрос в 4 часа дня 11ого мая, то он вернет пользователя, что немного не подходит. Есть ли какая-то ф-ия которая округлила бы regdate до след. дня? В гугле для этого пишут страшные хранимые процедуры и т.д., мне кажется все гораздо проще. Можно конечно 8 дней добавлять, но тоже немного криво)
Спасибо


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
AndreyIQ
Дата 10.5.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 3
Всего: 8



Цитата(Ripper @ 10.5.2012,  10:24)
Есть ли какая-то ф-ия которая округлила бы regdate до след. дня?

в firebird:
Код

cast(regdate as date)+1


Это сообщение отредактировал(а) AndreyIQ - 10.5.2012, 10:32
PM MAIL   Вверх
Akina
Дата 10.5.2012, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Ripper, никогда не выполняйте операций с полями, если можно выполнить операции с константами или функциями. Вы теряете возможность использовать индексы. И выбирайте правильную функцию...

Код

UPDATE `user` SET `status` = '1' WHERE DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) > regdate




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ripper
Дата 10.5.2012, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



А, если я верно понимаю, current_date вернет дату (без часов-минут-секунд), и тогда все будет как нужно. Например если юзер зарегистрировался 10 мая в 5 часов, сегодня 17 мая 8 часов, то 17-7 = 10 и условие не выполнится?)

Спасибо большое Akina!


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Akina
Дата 10.5.2012, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Ripper @  10.5.2012,  18:08 Найти цитируемый пост)
если я верно понимаю, current_date вернет дату (без часов-минут-секунд), 

Не надо ничего "верно понимать".
http://dev.mysql.com/doc/refman/5.5/en/dat...-functions.html


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.