Thread: small bug on 3-digit years in 9.2-dev

small bug on 3-digit years in 9.2-dev

From
Marc Cousin
Date:
Hi,

While working on the "What's new in 9.2", I think I found a small bug:

SELECT to_date('519-07-02','YYY-MM-DD'); to_date   
------------0519-07-02
(1 row)

It comes, I think, from the year 519 case not being handled in the following 
code. Patch attached

+    if (year < 70)
+        return year + 2000;
+    /* Force 70-99 into the 1900's */
+    else if (year >= 70 && year < 100)
+        return year + 1900;
+    /* Force 100-519 into the 2000's */
+    else if (year >= 100 && year < 519)
+        return year + 2000;
+    /* Force 520-999 into the 1000's */
+    else if (year >= 520 && year < 1000)
+        return year + 1000;
+    else
+        return year;

Regards

Re: small bug on 3-digit years in 9.2-dev

From
Tom Lane
Date:
Marc Cousin <cousinmarc@gmail.com> writes:
> While working on the "What's new in 9.2", I think I found a small bug:

Yeah, that code certainly looks wrong, thanks for the report!

>      /* Force 100-519 into the 2000's */
> -    else if (year >= 100 && year < 519)
> +    else if (year >= 100 && year <= 519)

I think "< 520" would be more in keeping with the adjacent coding.
        regards, tom lane