isdate_tiny
この関数は、入力ストリングが YYYYMMDD フォーマットの有効な日付になっているかどうかを判別します。
有効な日付は、それぞれ「0」から「9」までのちょうど 8 文字で構成されます。 月は 01 から 12 までの間でなければなりません。 日は「01」から月の日数までの間でなければなりません。 うるう年も考慮されます。
構文
isdate_tiny(date);
- 日付
- 検査対象となる日付。
タイプ: VARCHAR(100)
戻り
INT4 型の次の値です。
- ストリングが YYYYMMDD フォーマットの有効な日付である場合は 1
- ストリングが NULL である場合は NULL
- その他の場合は 0
例
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)