SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.11.2012 22:50:55

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

помогите подкорректировать запрос

суть такая, в таблице поле time_view в формате time()
в переменной $time_t я выташил дату без времени, тоже самое нудно сделать в запросе
я так думаю что суть моего запроса верна, а вот орфография хромает) помогите подкорректировать пожалуйста

$time_t = date('Y-m-d');

$result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see='$myrow_user[id]' and date(Y-m-d, `time_view`) = '$time_t'");
$temp_view_today = mysql_fetch_array($result_view_today);
$posts_view_today = $temp_view_today[0];

Неактивен

 

#2 19.11.2012 23:25:16

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите подкорректировать запрос

and date(`time_view`) = '$time_t'

Если потребуется другой формат отличный от 'Y-m-d', то
http://dev.mysql.com/doc/refman/5.5/en/ … ate-format

P.S. Не понял в каком формате у вас храниться время в базе, возможно вам потребуется http://dev.mysql.com/doc/refman/5.5/en/ … m-unixtime

Неактивен

 

#3 19.11.2012 23:25:57

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: помогите подкорректировать запрос

serj011 написал:

суть такая, в таблице поле time_view в формате time()
в переменной $time_t я выташил дату без времени, тоже самое нудно сделать в запросе
я так думаю что суть моего запроса верна, а вот орфография хромает) помогите подкорректировать пожалуйста

формат time_view именно time (HH:MM:SS)?
Тогда вы никак не сделаете желаемое, т.к. в поле типа time не хранится дата

Отредактированно Shopen (19.11.2012 23:26:57)

Неактивен

 

#4 20.11.2012 01:34:13

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

Попробую все переформулировать.
Задача: вытащить все строки, которые соответствуют сегоднешней дате.

В таблицу дата заносится в формате time(); в time_view
Я думаю что есть и более правильные варианты, но мой такой)

перед запросом я беру текущую дату в формате Y-m-d' - $time_t = date('Y-m-d');
а в запросе необходимо из поля time_view вытащить дату в таком же формате - date('Y-m-d', time_view); и соответственно вытащить те строки где date('Y-m-d', time_view) = $time_t

Отредактированно serj011 (20.11.2012 01:34:55)

Неактивен

 

#5 20.11.2012 01:41:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите подкорректировать запрос

Не ясно, что вы подразумеваете под "форматом time()". Приведите пример данных.

Неактивен

 

#6 20.11.2012 01:44:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите подкорректировать запрос

Покажите результат

show create table view_anket;

Неактивен

 

#7 20.11.2012 02:02:07

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

vasya написал:

Не ясно, что вы подразумеваете под "форматом time()". Приведите пример данных.

$time_view = time();
$result = mysql_query ("INSERT INTO view_anket (time_view) VALUES('$time_view')");

пример занесенных данных = 1353362279

$pdpa = date('Y-m-d', $result['time_view']);
echo $pdpa = 2012-11-19

$time_t = date('Y-m-d');
echo $time_t  = 2012-11-19

$pdpa = $time_t равно УРА!)

Неактивен

 

#8 20.11.2012 02:03:08

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

vasya написал:

Покажите результат

show create table view_anket;

как его показать?) я вам все покажу)))

Неактивен

 

#9 20.11.2012 02:20:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите подкорректировать запрос

Выполнить команду smile Но это уже не нужно.

MariaDB [(none)]> SELECT date(FROM_UNIXTIME(1353362279));
+---------------------------------+
| date(FROM_UNIXTIME(1353362279)) |
+---------------------------------+
| 2012-11-20                      |
+---------------------------------+

Неактивен

 

#10 20.11.2012 02:37:41

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

Спасибо огромное. Оказывается все так просто)))

Неактивен

 

#11 20.11.2012 05:12:50

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: помогите подкорректировать запрос

ну и на будущее - формат хранения в таблице у вас (то что вы назвали time) скорее всего либо varchar либо int в котором вы храните число unixtime (т.е. дата в юникс-формате)

Неактивен

 

#12 20.11.2012 20:07:51

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

varchar) спасибо)

Неактивен

 

#13 21.11.2012 19:13:00

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

есть еще вопрос в догонку к этой теме...

у меня получился вот такой запрос
$result_view_today = mysql_query("SELECT COUNT(*) FROM view_anket WHERE id_users_see=$myrow_user[id] and date(FROM_UNIXTIME(time_view)) = '$time_t'");

на другом форуме где я тоже спрашивал как это сделать, я выложил рабочий вариант, на что мне ответили - "есть у меня подозрение, что при таком запросе индексы не заюзаются. Но я так понимаю, тебе пока на это насрать smile"

Так вот) заюзаются индексы при таком запросе или нет?))) и если не сложно хотя бы в двух словах - О ЧЁМ РЕЧЬ?))))))

Неактивен

 

#14 21.11.2012 19:38:50

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: помогите подкорректировать запрос

Правильно говорят, не заюзются. Любая функция преобразующая данные столбца отключит использование индексов.
Чтобы индекс использовался (по полю time_view), вам нужно переделать запрос на такой:


SELECT COUNT(*)
FROM view_anket
WHERE
id_users_see=$myrow_user[id]
AND time_view >= UNIX_TIMESTAMP(DATE('time_t1'))
AND time_view < UNIX_TIMESTAMP(DATE('time_t1')+1)


это если не переделывать структуру таблицы и столбцов

Неактивен

 

#15 22.11.2012 11:23:00

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: помогите подкорректировать запрос

Работает и этот запрос... На что это будет влиять если индекс по полю time_view не будет использоваться?


подскажите самую простенькую статью по эти индексам, для начинающих)

Неактивен

 

#16 22.11.2012 12:57:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите подкорректировать запрос

FAQ №5

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson