2015-12-12 4 views
1

Я сохранил строки в таблице с пользовательским часовым поясом. Теперь я хочу получить данные из этой таблицы всего за сегодня.Дата фильтрации из поля timestamp в mysql

Так вот что я пытался

date_default_timezone_set('America/Los_Angeles'); 
$dt = new DateTime(); 
$today = $dt->format('Y-m-d'); //outputs 2015-12-07 
$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` = '$today'"); 

И моя строка содержит дату в формате временных меток, как 2015-12-07 22:42:02

Но я получаю пустой результат.

+0

Можете ли вы показать нам код для 'outputs' функционировать? Я предполагаю, что это функция, которую вы написали сами. – br3nt

+0

@ br3nt: его просто mysqli_query, ничего плохого в скрипте ... Я выполнил запрос непосредственно в phpmyadmin..и возвращает возвращаемые результаты. – Vishnu

+0

Хорошо. Является ли столбец даты определенным типом данных даты или является датой/меткой времени? – br3nt

ответ

0

Вы должны преобразовать дату TIMESTAMP перед передачей его в MySQL:

date_default_timezone_set('America/Los_Angeles'); 
$dt = new DateTime(); 
$today = $dt->format('Y-m-d'); //outputs 2015-12-07 

$ok = outputs("SELECT * FROM `table` WHERE DATE_FORMAT(date,'%Y-%m-%d')= $today"); 
+0

не работает, я упомянул, что значение sql clumn выглядит как 2015-12-07 22:42:02 – Vishnu

+0

Вы упомянули перед этим свою метку времени в столбце, но если ваша колонка, как вы упомянули, вы можете использовать функцию NOW() mysql, которая возвращает текущий дата сейчас. –

+0

Да, я также упомянул о том, что использую пользовательскую tiemzone ... теперь() будет использовать сервер часовой пояс – Vishnu

1

Попробуйте это:

$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE DATE(date) = CURDATE()"); 

для преобразования времени в соответствии с часовым поясом: ConvertTimeZone

+0

, если возможно, тогда также измените название столбца 'date' на другое, так как' date' зарезервировано ключевое слово 'MySQL' –

+0

Как вы видите мой quesition, я использую часовой пояс los angeles..Если я использую curdate, он будет использовать часовой пояс сервера – Vishnu

+0

@ Вишну просто проверьте эту ссылку, возможно, это поможет: https://blog.mozilla.org/it/2012/11/ 16/превращающего часового пояса-специфический раз-в-MySQL / –

0

если $ сегодня =» 2015-12-07 22:42:02 '; ваш запрос даст результат.

$today='2015-12-07 22:42:02'; 
$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` = '$today'"); 

еще делать скоротать дату сегодня и следующую дату и получить значение, как указано

$today='2015-12-07'; 
$next='2015-12-08'; 
$ok = mysqli_query($sqli,"SELECT * FROM `table` WHERE `date` >= '$today' and `date` <= '$next' "); 

подробнее см это Oracle SQL : timestamps in where clauseHow to compare Timestamp in where clause

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