isdate_tiny

Esta función determina si la serie de entrada representa una fecha válida con el formato AAAAMMDD.

Una fecha válida consta de exactamente 8 caracteres, cada uno entre '0' y '9'. El mes debe estar entre 01 y 12. Los días deben estar entre '01' y el número de días del mes. Se tienen en cuenta los años bisiestos.

Sintaxis

isdate_tiny(date);
Fecha
La fecha a comprobar.

Tipo: VARCHAR(100)

Devuelve

Un valor de tipo INT4:
  • 1 si la serie es una fecha válida con el formato AAAAMMDD
  • NULL si la serie es NULL
  • 0 en otro caso

Ejemplos

CREATE TABLE DateAsString(date VARCHAR(50));
INSERT INTO DateAsString VALUES ('2009010');
INSERT INTO DateAsString VALUES ('200901222');
INSERT INTO DateAsString VALUES ('200');
INSERT INTO DateAsString VALUES ('-20091101');
INSERT INTO DateAsString VALUES ('20090001');
INSERT INTO DateAsString VALUES ('20091301');
INSERT INTO DateAsString VALUES ('20090400');
INSERT INTO DateAsString VALUES ('20090431');
INSERT INTO DateAsString VALUES ('20080229');
INSERT INTO DateAsString VALUES ('20090229');
INSERT INTO DateAsString VALUES ('21000229');
INSERT INTO DateAsString VALUES ('19991919');
INSERT INTO DateAsString VALUES ('20040429');
INSERT INTO DateAsString VALUES ('yyyymmdd');
INSERT INTO DateAsString VALUES ('abcd0101');
INSERT INTO DateAsString VALUES ('Date');
INSERT INTO DateAsString VALUES (NULL);

SELECT isdate_tiny(date), date FROM DateAsString ORDER BY isdate_tiny, date;

ISDATE_TINY | DATE
------------+-----------
            |
          0 | -20091101
          0 | 19991919
          0 | 200
          0 | 20090001
          0 | 2009010
          0 | 200901222
          0 | 20090229
          0 | 20090400
          0 | 20090431
          0 | 20091301
          0 | 21000229
          0 | Date
          0 | abcd0101
          0 | yyyymmdd
          1 | 20040429
          1 | 20080229
(17 rows)