2010-10-01 5 views
1

Нужна помощь с PHP/MySql. Необходимо выбрать все записи из «сегодняшнего дня».Выберите * из таблицы, где date = today

В моей таблице есть coloumn, который содержит отметку unixtime, и я хочу просто выбрать из таблицы, где отметка unixtime = сегодня.

Удалось это сделать в командной строке linux, просто нужно выполнить основной запрос MySql?

ответ

3

Поскольку вы помечены PHP я предоставить PHP ответ:

list ($y, $m, $d) = explode('.', date('Y.m.d')); 
$today_start = mktime(0, 0, 0, $m, $d, $y); 
$today_end = mktime(23, 59, 59, $m, $d, $y); 
// do the query with this clause: 
// ... WHERE unix_timestamp BETWEEN $today_start AND $today_end 
+0

вы должны инкапсулировать строку даты в ' 'или' "' 'как дата ('YMD')' – RobertPitt

1

Подходящего ИНЕКЯ может быть:

CAST(FROM_UNIXTIME(<your_field>) AS DATE) = CURDATE() 
  • FROM_UNIXTIME() - преобразует в MySQL DATETIME
  • CAST (AS DATE) - получает просто часть даты
  • CurDate() - получает текущую дату
13

Я бы для версии SQL:

SELECT * FROM table WHERE DATE(timestamp_field) = CURDATE();

+3

использование ДАТА (FROM_UNIXTIME (timestamp_field)), если timestamp_field удерживает нет. Секунд с начала 1970 – nos

+1

+1 Хотя я бы также использовал 'CURDATE()' или 'CURRENT_DATE' вместо' DATE (NOW()) ' – wimvds

+0

Там - я исправил его - теперь он использует CURDATE() :-) – mbanzon

1
SELECT * FROM tbl WHERE date >= CURDATE() 
1
 
$q="select * from table where date >'".date("Y-m-d 00:00:00")."' and date <'".date("Y-m-d 23:59:59")."'"; 
1

на моем столе, который имеет колонку datetime, я использую это успешно

SELECT * FROM orders WHERE DATE(order_time) = DATE(NOW()) 
3

Вот правильные способы сделать это:

WHERE `date` BETWEEN UNIX_TIMESTAMP(DATE(NOW())) AND UNIX_TIMESTAMP(DATE(DATE_ADD(NOW(), 1 DAY))) 

если нет значения в будущем (завтра, через 2 дня после завтра, и т.д.), то это может быть упрощена:

WHERE `date` >= UNIX_TIMESTAMP(DATE(NOW())) 

и при изменении типа date поля для datetime возможный запрос будет:

WHERE `date` >= DATE(NOW()) 

Когда я говорю «правильно», я имею в виду, что эти запросы могут быть оптимизированы с использованием индексов. И такие запросы, как DATE(order_time) = DATE(NOW()) - не могут, потому что это выражение над полем.

Смежные вопросы