http://www.perlmonks.org?node_id=517152


in reply to working with year in mysql

Is isn't clear from your "question" where the problem might be, but there are a few things you can try...

Make sure you quote the year field (eg, '02') as MySQL will helpfully strip the leading zeros off bare numbers (eg, 02).

If you're INSERTing this data using DBI and placeholders, it's possible DBI is misquoting your input.

Using bind_params may help to coerce it otherwise, or you could explicitly pad your input instead so that the absence of quotes on numbers becomes a non-issue (eg, INSERT ... LPAD(?, 2, 0)).

Padding works equally well if you prefer to tackle this on the output side of things, and can be done in your SQL as above (eg, SELECT ... LPAD(...)) or by massaging the results in Perl afterwards (eg, sprintf '%02s', $year_col, but note the use of 's' instead of the more common 'd').

    --k.