2016-03-12 1 views
1

Im новичка для sql. Мой код:Различные формат даты в МЕЖДУ состоянии

$start_date='2017-01-01'; 
$end_date='2016-01-31'; 
$this->db->where('date_note BETWEEN "'. date('Y-m-d', strtotime($start_date)). '" and "'. date('Y-m-d', strtotime($end_date)).'"'); 

Но в моей базе данных, как 2016-03-11 14:21:36

Как я могу получить эту запись из базы данных с другой датой формата? Спасибо

+1

У вас есть событие, которое начинается после того, как она заканчивается? Что это? Большой взрыв? – Strawberry

+0

'date ('Ym-d', strtotime ($ start_date))' является ['no-op'] (https://en.wikipedia.org/wiki/NOP) для значения, которое вы используете для' $ start_date '. ['strtotime()'] (http://php.net/manual/en/function.strtotime.php) использует переданную строку ('2017-01-01') для вычисления временной метки, затем [' date ('Ym -d ') '] (http://php.net/manual/en/function.date.php) преобразует временную метку обратно в строку. Угадай, что? Он производит точно значение '$ start_date'. – axiac

ответ

1

Функция MySQL DATE_FORMAT() полностью решает вашу проблему, так как позволяет вам получить время, которое вы сохранили в своей базе данных в выбранном вами формате.

0

Нет проблем с SQL. Это нормально сравнивать DATE с DATATIME (как в вашей базе данных).

Вот демо:

mysql> SELECT '2016-03-11 14:21:36' BETWEEN '2016-03-10' AND '2016-03-12'; 
+-------------------------------------------------------------+ 
| '2016-03-11 14:21:36' BETWEEN '2016-03-10' AND '2016-03-12' | 
+-------------------------------------------------------------+ 
|               1 | 
+-------------------------------------------------------------+ 
1 row in set (0.00 sec) 
+0

Я думаю, что что-то случилось с моим сервером – Vinsens

+0

с какой проблемой вы сталкиваетесь? –

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