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 :: Версия для печати :: количество записей за последние 24 часа?
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » количество записей за последние 24 часа?

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

1. DelphinPRO - 02 Декабря, 2013 - 14:01:24 - перейти к сообщению
Извиняюсь за примитивный вопрос.

Есть поле типа DATETIME
как выбрать количество записей за последние 24 часа?

Как сделать то же самое с полем типа TIMESTAMP?
2. armancho7777777 - 02 Декабря, 2013 - 14:09:15 - перейти к сообщению
DelphinPRO пишет:
TIMESTAMP

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_name WHERE UNIX_TIMESTAMP(date_col) > UNIX_TIMESTAMP() - 24*60*60


DelphinPRO пишет:
DATETIME

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_name WHERE MICROSECOND(date_col) > MICROSECOND(NOW()) - 24*60*60*1000


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_name WHERE TIMESTAMPDIFF(SECOND, date_col, now()) < 24*60*60

?
3. Мелкий - 02 Декабря, 2013 - 14:32:04 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` WHERE date_col >= now() - interval 1 day

datetime или timestamp - поведут себя идентично.
Если вычисление now перекинуть на приложение, то в довесок будет работать кэш запросов.

armancho7777777, не стоит отказываться от индексов там, где они уместны. Если только тупой планировщик не догадается, что от него хотят на самом деле - ваши запросы не смогут использовать индексы.
функция(поле) не может использовать индекс по этому полю, для этого нужен функциональный индекс по результату выполнения этой функции. Но mysql такое не умеет.
4. armancho7777777 - 02 Декабря, 2013 - 14:43:38 - перейти к сообщению
Мелкий пишет:
Если вычисление now перекинуть на приложение, то в довесок будет работать кэш запросов.

Не знал этих тонкостей )
5. DelphinPRO - 02 Декабря, 2013 - 14:47:31 - перейти к сообщению
Мелкий, благодарю. Вечером буду пробовать Улыбка
(Добавление)
А если now вычислять в php? то в каком формате поставлять в запрос?

так сработает?
PHP:
скопировать код в буфер обмена
  1. 'WHERE date_col >= '. time() .'  - interval 1 day'
6. Мелкий - 02 Декабря, 2013 - 15:31:24 - перейти к сообщению
DelphinPRO, подставлять обычный Y-m-d H:i:s

armancho7777777 пишет:
Не знал этих тонкостей )

В конце страницы есть перечисление ситуаций, когда запрос становится некешируемым: http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]e-operation[dot]html
7. armancho7777777 - 02 Декабря, 2013 - 15:45:49 - перейти к сообщению
Ага, спасибо Мелкий!
8. DelphinPRO - 02 Декабря, 2013 - 19:08:17 - перейти к сообщению
Благодарю, все работает Улыбка

 

Powered by ExBB FM 1.0 RC1