Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выборка из бд в промежуток времени
Форумы портала PHP.SU » » Работа с СУБД » Выборка из бд в промежуток времени

Страниц (1): [1]
 

1. mik - 12 Декабря, 2011 - 00:25:30 - перейти к сообщению
Привет, всем помогите,
Есть таблица статей с id,title,text,dt.

Как мне сделать выборку записей где dt = time() и в промежуток например с 20:30 до 21:00

P.s dt = int (unix)

Может не правильно описал проблему, говорите если что , очень нужна ваша помощь

Заранее спасибо
2. Panoptik - 12 Декабря, 2011 - 00:37:30 - перейти к сообщению
http://phpclub[dot]ru/mysql/doc/date[dot][dot][dot]e-functions[dot]html

посмотрите, мож че интересного найдете. если будут вопросы напишите что вы пробовали, и что никак не получается
3. mik - 12 Декабря, 2011 - 00:40:02 - перейти к сообщению
Спасибо , попробую)
4. Panoptik - 12 Декабря, 2011 - 13:23:27 - перейти к сообщению
Цитата:
P.s dt = int (unix)
это тип unixtimestamp или int?
5. mik - 12 Декабря, 2011 - 13:29:40 - перейти к сообщению
Panoptik пишет:
это тип unixtimestamp или int?


Тип столбца Int а запись в eдином числе (unix)
6. Panoptik - 12 Декабря, 2011 - 13:33:01 - перейти к сообщению
что значит в едином числе? это метка времени? можно пример?
7. mik - 12 Декабря, 2011 - 13:38:49 - перейти к сообщению
я передаю дату и потом с помощью mktime() перевожу ее в unix (time())
8. Panoptik - 12 Декабря, 2011 - 13:57:25 - перейти к сообщению
вот извращения с математическими операциями, но лучше вам преобразовать данные в поле dt в тип unixtimestamp тогда можно будет использовать функции для работы с датой и временем, в данном случае не учитывается часовой пояс, так что может быть сдвиг на несколько часов
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table_time` WHERE ((`dt`%86400)/3600)>=21 AND ((`dt`%86400)/3600)<=22 AND ((`dt`%1440)/60)>=30
9. mik - 12 Декабря, 2011 - 14:01:30 - перейти к сообщению
Спасибо, если я переведу в Unix , можете дать аналогичный запрос ?
10. Panoptik - 12 Декабря, 2011 - 14:19:44 - перейти к сообщению
ща подумаю, а вы переводите осторожно, потому что все данные потеряются если вы напрямую будете это делать
11. tuareg - 12 Декабря, 2011 - 14:21:01 - перейти к сообщению
http://phpclub[dot]ru/mysql/doc/date[dot][dot][dot]e-functions[dot]html
Так будет гораздо проще.
И время лучше хранить не в int
12. Panoptik - 12 Декабря, 2011 - 14:28:00 - перейти к сообщению

вверху во втором посте не замечаете что либо похожее))
(Добавление)
вот вариант запроса, если тип поля 'timestamp'
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *,TIME(`dt`)  FROM `table_time` WHERE TIME(`dt`) BETWEEN '21:30:00' AND '22:00:00'
13. tuareg - 12 Декабря, 2011 - 19:32:30 - перейти к сообщению
Если честно я прочитал первый пост. А уже потом не читал...

 

Powered by ExBB FM 1.0 RC1