![]() |
Campo tipo date marcado como NULL retorna una fecha extraña (3/12/1899)
Buen día, ¿Alguien ha tenido el error comentado en el titulo, tengo un registro en mi tabla donde el campo FECHA viene como NULL , pero al hacer la validación en Delphi (Ya que, si el valor es Nulo, debo de insertar la fecha del día de hoy, pero si Fecha tiene algún valor debo de dejarlo como esta) me retorna una fecha extraña (30/12/1899) :confused::confused::confused::confused:
La validación la hago de la siguiente manera:
Saludos. |
Estuve investigando, y realmente sucede esto porque el campo Date nunca se queda como NULL, solamente toma una "Fecha Random?"
Total, esta fecha: 30/12/1899 ¿es la que se queda fija? o siempre cambiara? :eek: Saludos |
Es que al ser null, se interpreta como cero, y firebird cuenta los días a partir del 30/12/1899 por lo que 1 es 31/12/1899, 2 es 01/01/1900, etc...
Lo que debes hacer es algo como: if fecha is null then fecha = now; O la fecha por defecto que te venga mejor. |
¡Hola, pgranados!
No es una fecha random, el cálculo de fechas en Delphi empieza desde el 30/Dic/1899. En un valor numérico (Double) que va aumentando desde ese día. System.TDateTime Cita:
0 = 30/12/1899 2.75 = 1/Ene/1900; 6:00 P.M. 35065 = 1/Ene/1996; 12:00 A.M 44972 = 15/Feb/2023; 12:00 A.M. Cuando en tu consulta validas el campo de fecha y en la tabla está como null. Al leerlo como TDateTime, se convierte a 0 y por lo tanto a la fecha que indicas. Si lo que debes validar es si el campo está null puedes usar la función IsNull.
|
Gracias Casimiro y movorack, de gran ayuda. Saludos. :D
|
La franja horaria es GMT +2. Ahora son las 21:16:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi