Problem: How do I know InterBase is Y2k compliant? Solution: You can run the following script and test it yourself ------- cut 8< --------------------- create database "y2k.gdb" user "sysdba" password "masterkey"; commit; connect y2k.gdb user "sysdba" password "masterkey"; commit; create table y2k_test (place_in_time varchar(40), its_date_stamp date); commit; insert into y2k_test (place_in_time, its_date_stamp) values ("yesterday", "yesterday"); insert into y2k_test (place_in_time, its_date_stamp) values ("today", "today"); insert into y2k_test (place_in_time, its_date_stamp) values ("tomorrow", "tomorrow"); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 7", (cast('today' as date) + 7)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 30", (cast('today' as date) + 30)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 365", (cast('today' as date) + 365)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 626", (cast('today' as date) + 626)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 627", (cast('today' as date) + 627)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 628", (cast('today' as date) + 628)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 7300", (cast('today' as date) + 7300)); insert into y2k_test (place_in_time, its_date_stamp) values ("(cast('today' as date) + 50000", (cast('today' as date) + 50000)); insert into y2k_test (place_in_time, its_date_stamp) values ("jan 1, 00", "jan 1, 00"); insert into y2k_test (place_in_time, its_date_stamp) values ("jan 1, 47", "jan 1, 47"); insert into y2k_test (place_in_time, its_date_stamp) values ("jan 1, 48", "jan 1, 48"); commit; select * from y2k_test; commit; ------- cut 8< --------------------- You will get the following results: PLACE_IN_TIME ITS_DATE_STAMP ========================== ============== yesterday 21-APR-1998 today 22-APR-1998 tomorrow 23-APR-1998 (cast('today' as date) + 7 29-APR-1998 (cast('today' as date) + 30 22-MAY-1998 (cast('today' as date) + 365 22-APR-1999 (cast('today' as date) + 626 8-JAN-2000 (cast('today' as date) + 627 9-JAN-2000 (cast('today' as date) + 628 10-JAN-2000 (cast('today' as date) + 7300 17-APR-2018 (cast('today' as date) + 50000 15-MAR-2135 jan 1, 00 1-JAN-2000 jan 1, 47 1-JAN-2047 jan 1, 48 1-JAN-1948 The last result is a little weird - you might think. Why do we do this: InterBase provides a reasonable default interpretation of two-digit years. The InterBase server interprets a two-digit year as the nearest year within a 50-year range. For example, 2/28/48 is interpreted as 1948, whereas 2/28/47 is 2047. For a full explanation please see the Y2K document on the InterBase website.
Last Modified: 27-OCT-00