So if a user types '25/12/2002', then DBI does something like:
INSERT INTO table (thisdate) VALUES('2002-12-25') WHERE id = 1;
(My function has converted it to YYYY-MM-DD format).
In the interval style one, DBI does:
INSERT INTO table (thisdate) VALUES ('DATE(NOW() + INTERVAL \'+1 month\')') WHERE id =1
You don't show any code. I don't see how and what you're doing.
But anyway: you could try to make DBI not to quote the date field, ever, and produce your own quotes when you need them. $dbh->quote($string) can do that for you.
Personally, I'd take another approach, and convert the user input to a valid date in plain Perl, instead of letting the DB do it. One of the Date::* modules surely must be able to do it for you. Otherwise, it's not too hard, or too big, to write it yourself. See, for a working code example, the calculation for cookie expiration dates in the sub 'expires_calc' in CGI::Util (which comes with CGI.pm). And since you're reformatting the date anyway, I think it must be pretty easy to fit that little bit of extra functionality in.