Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/11/2012, 16:13
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: date_format no me esta funcionando, que tengo mal?

Hola marco64yes:

Creo que no te tomaste el tiempo suficiente como para leer bien la documentación... DATE_FORMAT

Cita:
DATE_FORMAT(date,format)

Formatea el valor date según la cadena format . Los siguientes especificadores pueden usarse en la cadena
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     -> DATE_FORMAT('01-11-2012', '%d-%m-%Y' ) tu_fecha,
  3.     -> DATE_FORMAT('2012-11-08 15:58:24', '%d-%m-%Y' ) mi_fecha;
  4. +----------+------------+
  5. | tu_fecha | mi_fecha   |
  6. +----------+------------+
  7. | NULL     | 08-11-2012 |
  8. +----------+------------+
  9. 1 row in set, 1 warning (0.00 sec)

Podrás preguntarte SI EN LOS DOS CASOS SE ESTÁ ENVIANDO UNA CADENA POR QUE EN MI CASO NO FUNCIONA... mucho cuidado, cuando manejas una cadena con formato ANSI (yyyy-mm-dd hh24:mm:ss) SE INTERPRETA COMO UNA FECHA... es por eso que en el segundo casi si funciona. Ahora bien, si lo que quieres es convertir tu cadena a una fecha utilizas la función STR_TO_DATE:

Código MySQL:
Ver original
  1. mysql> SELECT STR_TO_DATE('01-11-2012', '%d-%m-%Y') fecha_correcta;
  2. +----------------+
  3. | fecha_correcta |
  4. +----------------+
  5. | 2012-11-01     |
  6. +----------------+
  7. 1 row in set (0.00 sec)

Aunque en realidad no tienes necesidad de hacer ningúna conversión si utilizas el formato ANSI... podrías hacer algo como esto:


Código:
SELECT *
FROM pagos
WHERE DATE(FECHA_SALDADA) BETWEEN  '2012-11-01' AND '2012-11-30'

o

SELECT *
FROM pagos
WHERE 
  DATE(FECHA_SALDADA) >= '2012-11-01' AND 
  DATE(FECHA_SALDADA) <= '2012-11-30'
La función DATE() te serviría para excluir las horas y considerar sólo la fecha

Código MySQL:
Ver original
  1. mysql> SELECT NOW(), DATE(NOW());
  2. +---------------------+-------------+
  3. | NOW()               | DATE(NOW()) |
  4. +---------------------+-------------+
  5. | 2012-11-08 16:04:43 | 2012-11-08  |
  6. +---------------------+-------------+
  7. 1 row in set (0.00 sec)

Saludos
Leo.