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)