Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

comparar variables datetime Vs date

Estas en el tema de comparar variables datetime Vs date en el foro de Mysql en Foros del Web. En mi tabla tengo definida la variable $fecha como: datetime y tengo los siguientes registros: Campo fecha: 1.- 2010-10-07 11:12:20 2.- 2010-10-08 10:18:23 3.- 2010-10-08 ...
  #1 (permalink)  
Antiguo 19/02/2010, 05:52
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 10 meses
Puntos: 21
comparar variables datetime Vs date

En mi tabla tengo definida la variable $fecha como: datetime y tengo los siguientes registros:

Campo fecha:
1.- 2010-10-07 11:12:20
2.- 2010-10-08 10:18:23
3.- 2010-10-08 12:12:43

Deseo mostrar los registros 2 y 3 que coinciden con la variable $fecha= "2010-10-08"

$consulta = mysql_query("SELECT * FROM $tabla WHERE fecha = '$fecha'", $link) or die ("No se pudo ejecutar la consulta");

Pero a causa que en la tabla tengo incluida la hora, es que no coinciden ambas variables.

¿Como puedo truncar la hora y poder hacer la comparación correctamente con solo la fecha?

Gracias anticipadas.
  #2 (permalink)  
Antiguo 19/02/2010, 07:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: comparar variables datetime Vs date

Función DATE():
Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE fecha = DATE('$fecha')
Estos detalles se pueden ver directamente en el manual de referencia de Mysql: Capítulo 12. Funciones y operadores

Guarda el link al manual. Siempre es bueno consultar la fuente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/02/2010, 07:47
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 10 meses
Puntos: 21
Respuesta: comparar variables datetime Vs date

Gracias gnzsoloyo.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Función DATE():
Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE fecha = DATE('$fecha')
Estos detalles se pueden ver directamente en el manual de referencia de Mysql: Capítulo 12. Funciones y operadores

Guarda el link al manual. Siempre es bueno consultar la fuente.
Gracias, lo he revisado y hay mucho material importante.
He probado y no logro la consulta que requiero, no me muestra información.

Por lo anterior he estado probando otras opciones, por ejemplo, si deseo mostrar los registros en que la variable "titulo" inicia con la letra "a" ¿Como debo formular la instrucción?

He supuesto que con esta instrucción lo podría lograr, pero no muestra nada:

SELECT * FROM $tabla WHERE SUBSTRING(titulo,1) = 'a'

Pretendo mostrar los registros en donde la primer letra de "titulo" sea la "a"


Respecto a la instrucción que me has pasado considero debe ser así:

SELECT *
FROM $tabla
WHERE DATE(fecha) = '$fecha'

Ya que pretendo truncar la hora en la variable de la tabla y tu me lo indicas así:
WHERE fecha = DATE('$fecha')
  #4 (permalink)  
Antiguo 19/02/2010, 09:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: comparar variables datetime Vs date

Veamos. El tema es saber cómo están guardadas las fechas en la tabla y cómo es la forma que tiene la fecha en la variable.
Las fechas para ser consideradas como tales para MySQL deben ser, por ejemplo:
1) "2010-12-31 23:59:59" (DATETIME)
2) "2010-12-31" (DATE)
Por ende, las variables tienen que tener la misma forma.

Entonces, si los datos fuesen así, la consulta, para responder bien debería ser:
Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE DATE(fecha) = DATE('$fecha');

Si $fecha es un DATE, no importa, de todos modos convertir a DATE() un DATE da un DATE.

Ahora bien, si la fecha está entrando "31/12/2010 23:59:59", la cosa cambia. Hay que usar dos funciones: STR_TO_DATE y DATE;
Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE DATE(fecha) = DATE(STR_TO_DATE('$fecha', '%d/%m%Y %T'));

En cambio, si entra "31/12/2010" solamente habría que usar una:

Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE DATE(fecha) = STR_TO_DATE('$fecha', '%d/%m%Y');

Nota: Es importante en el pattern poner correctamente el símbolo de separación de dia/mes/año. Para MySQL no es lo mismo usar "/" que "-". Si pones el incorrecto dará NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/02/2010, 12:03
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 10 meses
Puntos: 21
Respuesta: comparar variables datetime Vs date

Estimado gnzsoloyo,

La instrucción para comparar fechas trabaja excelente.
Tengo en la tabla y en la variable externa el mismo formato y la misma distribución, solamente que en la tabla, además de la fecha, tiene la hora.

Lo he resuelto con tu acertada sugerencia de asignar DATE() a ambos campos así:

Código MySQL:
Ver original
  1. WHERE DATE(fecha) = DATE('$fecha')

¡Funciona excelente!

En base al ejemplo anterior, he tratado de resolver para el caso de texto.
Mi mi tabla tiene el campo: "titulo".

Campo "titulo" en la tabla:
1.- aaabcdefg
2.- aaa12345
3.- zxywqm

y deseo mostrar los registros que inician con "a", por lo que he indicado:

Código PHP:
$buscar "aaabracadabra"
Código MySQL:
Ver original
  1. WHERE SUBSTRING(titulo,1) = 'substring($buscar,0)'

y he intentado con esta:
Código MySQL:
Ver original
  1. WHERE SUBSTRING(titulo,1) = 'a'

Pero en ambos casos no me muestra información.

¿Que estoy haciendo mál?

He podido entender que mySQL inicia con la posición 1, cuando en PHP inicia con la posición 0 ¿Acaso es así?

Gracias anticipadas
  #6 (permalink)  
Antiguo 19/02/2010, 12:21
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: comparar variables datetime Vs date

Puedes utilizar la función left.

left(titulo,1) = left($biscar,1)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: comparar, date, datetime, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:50.