X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Ftime.lisp;h=d97673310eb341a2a6bcefca859cfe8a3f5e872e;hp=70ac8286d4d74f82a64b02af0fe516d9dcd918d6;hb=748f18aeaee5e0512317657a86f7a019f06e12de;hpb=1162a1fc231bb6c4273893a6f528a3f92e2e484d diff --git a/sql/time.lisp b/sql/time.lisp index 70ac828..d976733 100644 --- a/sql/time.lisp +++ b/sql/time.lisp @@ -1129,7 +1129,7 @@ formatted date string." (defun syntax-parse-iso-8601 (string) ;; use strlen to determine if fractional seconds are present in timestamp (let ((strlen (length string)) - year month day hour minute second usec gmt-sec-offset) + year month day hour minute second gmt-sec-offset) (handler-case (progn (setf year (parse-integer string :start 0 :end 4) @@ -1145,8 +1145,9 @@ formatted date string." (parse-integer string :start 17 :end 19) 0)) (cond - ((or (char= #\, (char string 19)) - (char= #\. (char string 19))) + ((and (> strlen 19) + (or (char= #\, (char string 19)) + (char= #\. (char string 19)))) (multiple-value-bind (parsed-usec usec-end) (parse-integer string :start 20 :junk-allowed t) (setf usec parsed-usec @@ -1185,6 +1186,7 @@ formatted date string." :bad-component (car (find-if (lambda (pair) (null (cdr pair))) `((year . ,year) (month . ,month) - (day . ,day) (hour ,hour) - (minute ,minute) (second ,second) - (timezone ,gmt-sec-offset))))))))) + (day . ,day) (hour . ,hour) + (minute . ,minute) (second . ,second) + (usec . ,usec) + (timezone . ,gmt-sec-offset)))))))))