2013-09-12 2 views
3

у меня есть поле в моей таблице БД, как creater_date как DateTime и имеющие значения, хранящиеся в виде 2013-09-13 02:12:44PHP/Codeigniter-- Как сравнить только дату, за исключением времени

Теперь я должен сравнить сегодня-дату (нет времени) с creater_date стол поле.

Я попробовал этот код, приведенный ниже, но он показывает ошибку:

function check_existing_User_weightStatus($u_id) 
{ 
    $this->load->database(); 
    $this->load->helper('date'); 
    $today = date('Y-m-d'); 
    $array = array('creater_id' => $u_id,DATE('created_date') => $today); 
    $this->db->where($array); 
    $query = $this->db->get('user_weight'); 
    if ($query->num_rows() > 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 

ошибка Получение:

A Database Error Occurred 

Error Number: 1064 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '13 Sep 2013 02:48:27 +0530Asia/Calcuttaam30Asia/Calcutta13_13am30Asia/Calcutta '' at line 4 

SELECT * FROM (`user_weight`) WHERE `creater_id` = '3235' AND `2013-09-13T02:48:27+05:30Fri,` 13 Sep 2013 02:48:27 +0530Asia/Calcuttaam30Asia/Calcutta13_13am30Asia/Calcutta '2013-09-13' 

Filename: D:\xampp\htdocs\webapp\system\database\DB_driver.php 

Line Number: 330 

я не хочу, чтобы сравнить со временем, я только хочу comapare с сегодняшней датой. Поле created_date (например, 2013-09-13 02:12:44) имеет datetime типы данных с некоторыми значениями времени. Но я хочу сравнить только с датой

+0

не датируйте время в оба конца от php до db. использовать собственные сравнения, например. 'Creater_id = CURDATE()'. –

+0

@MarcB Извините, что вы подразумеваете под 'do not round-trip dates '? не могли бы вы его уточнить? – beginner

+0

считают, что PHP может генерировать дату в 11:59:59 вечера, но запрос не будет работать до 12:00:00 следующего дня. не имеют PHP, генерируют дату, когда БД может сделать это за вас, и используйте правильную дату «прямо сейчас». –

ответ

3

Проблема в том, что ваш код генерирует неисправный синтаксис SQL, как показывает ошибка.

Я не эксперт с CodeIgniter, но вот как сделать обычный запрос непосредственно, то, вероятно, что вы хотите сделать:

function check_existing_User_weightStatus($u_id) 
{ 
    $today = date('Y-m-d'); 
    $this->load->database(); 
    $query = $this->db->query("SELECT * FROM `user_weight` WHERE `creater_id` = '$u_id' AND DATE(`created_date`) = '$today'"); 

    if ($query->num_rows() > 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Ошибка в коде происходит на этой линии

$array = array('creater_id' => $u_id,DATE('created_date') => $today); 

Я уверен, что это не так, как будет выполняться предложение where, поэтому вы можете найти документы codeIgniter! найти правильный способ сделать это! (Вы не говорите, где предложение использовать AND, OR и т. Д. Операторов)

+0

ах я вижу, я только что обновил код сейчас, дайте мне знать, как это происходит –

+0

вам нужно предоставить больше данных, вы можете показать информацию об отладке? или эхо-содержимое '$ query', прежде чем он вернет true/false? –

+0

Я решил эту проблему, на самом деле вам нужно обновить свой код, ваш код выше не завершен. Добавьте '$ today =" '".date (' Ym-d ')."' ";' Этот код вместо вашего '$ today = date ('Ym-d');' и наконец добавить 'AND, наконец, добавить это - >> DATE ('created_date') – beginner

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