Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вычесть из даты дату 
:(
    Опции темы
abalich
Дата 21.6.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



У мене есть БД, в ней таблица с инфой юзера (там есть колонка с последней датой посещения) она в формате date("d.m.y"); так вот мне нужно следующее, что юзер который посещал сайт последний раз более тре месяцев назад удалялся, как это сделать???при помощи SQL запроса?????


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
murod
Дата 21.6.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 17.9.2005
Где: Uzbekistan/Tashke nt

Репутация: 2
Всего: 4



Код

delete from `your_table` where  (TO_DAYS(NOW())-TO_DAYS(`user_reg_date`))>90 

--------------------
Люди всего мира берегите природу!  
PM MAIL ICQ   Вверх
abalich
Дата 21.6.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Цитата

Код

 delete from `your_table` where  (TO_DAYS(NOW())-TO_DAYS(`user_reg_date`))>90  


А ничего что дата в формате date("d.m.y");  а колонка в таблице типа VARCHAR!??


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
sTa1kEr
Дата 21.6.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

Репутация: 56
Всего: 146



Цитата(abalich @  21.6.2007,  12:28 Найти цитируемый пост)
при помощи SQL запроса????? 

Да, лучше всего сделать именно при помощи SQL запроса. Для MySQL:
Код

SELECT * FROM `users`
WHERE `last_visit` < NOW() - INTERVAL 3 MONTH;
-- Или так
SELECT * FROM `users`
WHERE `last_visit` < DATE_SUB(NOW(), INTERVAL 3 MONTH);

PM MAIL   Вверх
abalich
Дата 21.6.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



А ничего что дата в формате date("d.m.y");  а колонка в таблице типа VARCHAR!??  smile  smile  smile 


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
sTa1kEr
Дата 21.6.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

Репутация: 56
Всего: 146



Цитата(abalich @  21.6.2007,  13:10 Найти цитируемый пост)
а колонка в таблице типа VARCHAR!?? 

С этого и надо было начинать...
Код

SELECT * FROM `users`
WHERE STR_TO_DATE(`last_visit`, '%d.%m.%y') < NOW() - INTERVAL 3 MONTH;

Только зачем хранить дату в VARCHAR ?
PM MAIL   Вверх
abalich
Дата 21.6.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Цитата

Код

SELECT * FROM `users`
WHERE STR_TO_DATE(`last_visit`, '%d.%m.%y') < NOW() - INTERVAL 3 MONTH;


ЩА попробую!!!!!


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
Alix36
Дата 21.6.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я вообще храню не дату, а time()  .
А при выводе с помощью функции преобразую.
Так проще и вычислять тоже.


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
abalich
Дата 21.6.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Цитата

Код

SELECT * FROM `users`
WHERE STR_TO_DATE(`last_visit`, '%d.%m.%y') < NOW() - INTERVAL 3 MONTH;


НЕ АА, не работает!!!
Цитата

я вообще храню не дату, а time()  .
А при выводе с помощью функции преобразую.
Так проще и вычислять тоже. 

Поподробней...


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
sTa1kEr
Дата 21.6.2007, 14:46 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

Репутация: 56
Всего: 146



Цитата(abalich @  21.6.2007,  14:43 Найти цитируемый пост)
НЕ АА, не работает!!!

Что именно не работает? Версия MySQL ?
PM MAIL   Вверх
BuShaRt
Дата 21.6.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 4
Всего: 6



PM MAIL   Вверх
abalich
Дата 22.6.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Цитата

Что именно не работает? Версия MySQL ?

Такой запрос удалил мне почти всех юзеров несмотря на то что их дата была текуще!!!!


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
sTa1kEr
Дата 22.6.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

Репутация: 56
Всего: 146



Цитата(abalich @  22.6.2007,  11:31 Найти цитируемый пост)
Такой запрос удалил мне почти всех юзеров

Я написал именно селект, а не делет специально, что бы сначала проверить, а не удалять сразу. 
Цитата(abalich @  22.6.2007,  11:31 Найти цитируемый пост)
несмотря на то что их дата была текуще!!!!

Значит не правильно дата парсилась. Выложите пример даты которая у вас хранится в varchar.

Добавлено @ 12:31
Код

SELECT STR_TO_DATE('01.02.05', '%d.%m.%y'); -- 2005-02-01
SELECT STR_TO_DATE('01.02.2005', '%d.%m.%Y'); -- 2005-02-01
SELECT NOW() - INTERVAL 3 MONTH; -- 2007-03-22 13:29:32
SELECT STR_TO_DATE('01.04.2007', '%d.%m.%Y') < (NOW() - INTERVAL 3 MONTH); -- 0
SELECT STR_TO_DATE('01.02.2007', '%d.%m.%Y') < (NOW() - INTERVAL 3 MONTH); -- 1


Это сообщение отредактировал(а) sTa1kEr - 22.6.2007, 12:32
PM MAIL   Вверх
abalich
Дата 22.6.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



06.02.07

Добавлено через 1 минуту и 10 секунд
Код

$date=mysql_escape_string(date("d.m.y"));
mysql_query("INSERT INTO `table` (`date`) VALUES ('$date');



--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
sTa1kEr
Дата 22.6.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

Репутация: 56
Всего: 146



А версия MySQL какая?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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