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)