Si el día, el mes y el año los expresamos en forma numérica las fechas en Firebird pueden usar tres separadores distintos, que son el guión, la barra y el punto. O sea que se pueden escribir como:

AAAA-MM-DD     (año-mes-día). Usa el guión

MM/DD/AAAA     (mes/día/año). Usa la barra

DD.MM.AAAA     (día.mes.año). Usa el punto

Ejemplos:

2013-07-11     es el 11 de julio del año 2013

07/11/2013     es el 11 de julio del año 2013

11.07.2013     es el 11 de julio del año 2013


Esto puede prestarse a confusión para quienes vivimos en países de habla castellana porque lo común en nuestros países es expresar las fechas con el formato DD/MM/AAAA pero para el Firebird si usamos barras el formato de las fechas es MM/DD/AAAA.

O sea que si escribimos 11/07/2013 podríamos pensar que se trata del 11 de julio de 2013 pero para el Firebird será el 7 de noviembre de 2013. Una fecha distinta.

Soluciones:

Hay tres soluciones posibles para evitarnos problemas:

  1. Siempre escribir la fecha como la reconoce el Firebird. Por ejemplo, usar siempre los puntos y el formato DD.MM.AAAA cuando insertemos o actualicemos fechas
  2. Crear una función que convierta la fecha escrita con barras en la fecha escrita con puntos o con guiones. Por ejemplo, el usuario escribe 11/07/2013 y nuestra función la convierte en 11.07.2013 antes de grabarla. O sea, reemplazó las barras por puntos.
  3. Usar literales para el mes.

Usando literales para el mes:

Si el mes lo representamos con sus tres letras iniciales en inglés entonces el Firebird siempre  reconocerá el mes correcto y no habrá confusión posible. Además, también podemos usar espacios y comas como separadores. Todos estos INSERT son equivalentes, todos hacen exactamente lo mismo: guardar en la tabla la fecha 11 de julio de 2013.

INSERT INTO MiTabla VALUES('11/JUL/2013')

INSERT INTO MiTabla VALUES('JUL/11/2013')

INSERT INTO MiTabla VALUES('2013/JUL/11')

INSERT INTO MiTabla VALUES('11.JUL.2013')

INSERT INTO MiTabla VALUES('JUL.11.2013')

INSERT INTO MiTabla VALUES('2013.JUL.11')

INSERT INTO MiTabla VALUES('11-JUL-2013')

INSERT INTO MiTabla VALUES('JUL-11-2013')

INSERT INTO MiTabla VALUES('2013-JUL-11')

INSERT INTO MiTabla VALUES('11 JUL 2013')

INSERT INTO MiTabla VALUES('11,JUL,2013')


Así que podríamos usar cualquiera de ellos e inclusive en un programa uno y en otro programa otro y no habrá confusión posible. Fíjate en los dos últimos: usan como separador el espacio y la coma.

Aún más:

  1. Los nombres de los meses podemos escribirlos en mayúsculas o en minúsculas. ‘JUL’ y ‘jul’ ambos son válidos
  2. Podemos usar el nombre completo del mes si lo deseamos: ‘JUL’, ‘jul’, ‘JULY’, ‘july’ son todos válidos

Representando el mes:

De todo lo anterior podemos deducir que al mes lo podemos representar escribiendo cualquiera de estas formas

01     JAN     January
02     FEB     February
03     MAR     March
04     APR     April
05     MAY     May
06     JUN     June
07     JUL     July
08     AUG     August
09     SEP     September
10     OCT     October
11     NOV     November
12     DEC     December

Conclusión:

El tema de las fechas puede conducir a confusión para quienes vivimos en países de habla castellana por lo tanto lo mejor para nosotros es estandarizar la forma que usamos para insertar o actualizar fechas, una muy buena opción que tenemos es usar literales para los nombres de los meses porque entonces no habrá confusión posible.

Artículo relacionado:

El índice del blog Firebird21

Anuncios