Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/08/2018, 07:18
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Incorrect datetime value: '0000-00-00 00:00:00'

En primer lugar, para que MySQL te acepte un tipo de fecha como ese, el servidor debe estar configurado para aceptarlo, cosa que no siempre encontrarás asi en la mayoría de los ISP rentados. Eso se hace en la configuracion de server y requiere permisos de root.

En segundo lugar, es una mala práctica qu eun campo que determine la fecha de BAJA sea no nulable. Lo más habitual y práctico es declararlo NULL con la condicion DEFAULT NULL, y buscar los activos por su campo de baja con NULL.

Eso, por ejemplo, sería una query del tipo

Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FOM tabla
  3. WHERE baja IS NOT NULL AND baja <= '2018-05-31 23:59:59';

O bien, si quieres las de un rango determinado:

Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FOM tabla
  3. WHERE DATE(baja) BETWEEN DATE('2018-03-31') AND  DATE('2018-05-31');


El uso de DATE en estos contextos corta la fecha de DATETIME a DATE, evitando el detalle de tener que poner horas,minutos y segundos.

TEn presente lo que digo: La técnica usual es declarar los campos de baja como nulables y poblarlos sólo al momento de la baja. Las consultas en ese contexto son mas simples de escribir y más rápidas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)