2012-07-17 11 views
5

estoy usando MySQL y mi columna de la tabla date es DATETIME tipocómo comparar DateTime columna con única fecha no el tiempo

Pero quiero comparar única fecha no el tiempo de hoy

 $today = date("Y-m-d", time()); 

Si se compara la fecha usando el método anterior, siempre sale mal.

$this->update(" 
UPDATE `stats_tracker` 
SET 
    `user_agent`='$this->visitor_user_agent' , 
    `referrer`='$this->referrer_page' , 
    `page_views`='$page_views' 
WHERE 
    `visitor_ip`='$this->visitor_ip' 
    AND `page`='$this->this_page' 
    AND `date`='$today'"); 

Por favor, Ayúdenme, no soy un buen programador mySQL.

Respuesta

18

hay una función de MySQL llamada FECHA que extraen la parte de fecha de una expresión de fecha o de fecha y hora

AND DATE(`date`)='$today' 

edición: Atención, como se dice en los comentarios a continuación, el uso de esto omitirá el índice en el campo de fecha y hora. Debe utilizar en su lugar:

AND date BETWEEN '$today 00:00:00' AND '$today 23:59:59' 
+1

No debe usar esto ya que mataría al índice en la columna de fecha ralentizando la consulta – Mojtaba

+0

No estoy seguro de entender , ¿qué sugerirías para no "matar el índice"? – nico

+1

necesita comparar la columna de fecha usando entre función suponiendo que quiere filas para enero 1st 2013 que necesita hacer: donde la fecha entre '2013-01-01 00:00:00' y '2013-01-01 23:59:59 ' – Mojtaba

0
date_format('%Y-%m', time()) 

es probablemente la función que necesita para hacer la comparación.

+0

eso no ayudará, porque la entrada de fecha y hora incompleto se completa automáticamente por MySQL asumiendo parte el tiempo = 0, por lo que se correspondería sólo en la medianoche, no en otros momentos durante el día se utiliza – Marki555

+0

la dirección incorrecta para los parámetros: según la documentación [DATE_FORMAT (fecha, formato)] (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format) – R3tep

1

Usted puede utilizar la función datediff así:

AND datediff(`date`, '$today') = 0 
+0

desafortunadamente esto tampoco usa índice en la columna 'date' (al menos no en mysql 5.1) – Marki555

Cuestiones relacionadas