Muchas gracias,
ElKurgan y
beginner01.
Por lo visto la persistencia de Firebird en usar espacio y no una
T, tiene que ver con su apego al
estándar SQL más que al estándar ISO. No es que se haya "desviado" o algo así.
Según se colige, si bien Oracle acepta el formato sin la T, es porque uno mismo tiene que indicárselo como segundo argumento de la función to_date. He leído que el
parámetro de formato puede omitirse, pero entonces la función to_date de Oracle se basaría en algo llamado
NLS_TERRITORY o
NLS_DATE_FORMAT:
Cita:
If you omit fmt, then char must be in the default date format [...] The default date format is determined implicitly by the NLS_TERRITORY initialization parameter or can be set explicitly by the NLS_DATE_FORMAT parameter.
|
Supongo entonces que en Oracle no hay forma de expresar una fecha y hora de manera literal, sin poner explícitamente el formato, con la completa seguridad de que todas sus versiones y configuraciones tomarán ese valor siempre de la misma manera. A diferencia de Firebird, que parece respetar bastante su formato predeterminado. ¿Qué hay de SQLite? ¿cuál es su formato predeterminado? ¿Y en MS-SQL, MySQL, PostgreSQL, Sybase, Informix...?
Los animo a hacer más pruebas con los servidores de bases de datos que tengan instalados.
Código SQL
[-]Select 'Test' From RDB$Database -- Cualquier tabla
Where Current_TimeStamp -- Cualquier cosa que sea un valor TimeStamp
> '2012-10-14 21:04:50' -- Una expresión literal de fecha y hora
¿Podrían ayudarme a determinar si el formato que acepta Firebird (
yyyy-mm-dd hh:mm:ss) podría ser un buen
default para la mayoría de los más populares motores SQL?
¿Hay o no un acomodo relativamente común o que merezca cierto respeto del año, mes, día, hora, minuto y segundo al expresar una fecha y hora literalmente en los diversos motores de bases de datos?
Por lo que voy viendo, creo que podríamos llegar a tener dos funciones: ghISODateTime (con la
T) y ghSQLDateTime (con espacio), pero es muy pronto para decidir. Es necesario recabar más información.
NOTA: En el primer mensaje escribí "hh:nn:ss" y más tarde "hh:mm:ss", lo primero fue por compatibilidad con la función FormatDateTime de Delphi, pero este
formato del formato no tiene importancia (sabemos que la parte cambiada se refiere a minutos). El formato de un valor literal de fecha y hora es el que importa. Insisto, ¿cuál es el más aceptado o que debiera respetarse?
Siéntanse partícipes de estas historias de colaboración. No estoy pidiendo ayuda para un proyecto personal que vaya a entregar a un cliente y por el cual me vayan a pagar. Esta es sólo una pequeña traba de diseño / concepto que vale la pena resolver en
nuestra biblioteca, solución que cuando menos servirá a otras personas que busquen respuesta a las mismas inquietudes.
Saludos.