In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Default datetime en Mariadb guarda NULL

Foro de Xailer profesional en español
Responder
Avatar de Usuario
gerencia
Mensajes: 289
Registrado: Sab Jun 20, 2009 6:01 pm

Default datetime en Mariadb guarda NULL

Mensaje por gerencia »

Hola Ignacio,
En la version 4 definia en una tabla de Mariadb el campo datetime como default '0000-00-00 00:00:00'
`fecha_anulado` datetime DEFAULT '0000-00-00 00:00:00',
y lo guardaba correctamente.

En la version 5 lo guarda NULL.

En espera de tus comentarios,
Jose David Angulo Urzola
Auditoria y Sistemas Ltda.
Cartagena-Colombia
Avatar de Usuario
gerencia
Mensajes: 289
Registrado: Sab Jun 20, 2009 6:01 pm

Re: Default datetime en Mariadb guarda NULL

Mensaje por gerencia »

Hola Ignacio,

Que me aconsejas acerca de lo anterior.

En espera de tus comentarios,
Jose David Angulo Urzola
Auditoria y Sistemas Ltda.
Cartagena-Colombia
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Default datetime en Mariadb guarda NULL

Mensaje por ignacio »

Buenos dias,

En mi opinión el tratamiento actual de Xailer 5 es el correcto. El valor que indica está fuera de rango:
The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
No obstante, MySQL admite la fecha con todo ceros como fecha especial invalida:
Invalid DATE, DATETIME, or TIMESTAMP values are converted to the “zero” value of the appropriate type ('0000-00-00' or '0000-00-00 00:00:00').
Y por tanto, tiene mucho sentido que en Xailer se trate como valor nulo. Desgraciadamente en Harbour no podemos distinguir entre valores inválidos especiales y valores nulos. El tipo NULL es algo inherente a cualquier entrono SQL, mientras que lo del valor invalido es algo bastante raro en mi opinión. De hecho, cuando lo he leído, he tenido que releerlo varias veces, por lo inaudito que me parecía.

Siento que tenga que cambiar algún condicional comparando con NULL en vez de con una fecha de mes y día cero :shock: , pero me te temo que es su mejor opción.

Un saludo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder