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

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks!
I have date format like this: "01/09/2012" that is getting inserted into sql server, I am getting errors, I am trying to convert into a sql format, something like this:
... my $date = "01/09/2012"; $date = strftime '%Y-%m-%d %H:%M:%S', $date; print $date; ...

Any idea on how I could do this?
Thanks!

Replies are listed 'Best First'.
Re: Date Convert
by roboticus (Chancellor) on Jan 09, 2013 at 19:26 UTC

    If it's a fixed format input string, I wouldn't bother with strftime. I'm guessing that something as simple as the following should work:

    my $date = "01/09/2012"; $date = join("-", reverse split /\//, $date), " 12:00:00";

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

Re: Date Convert
by Anonymous Monk on Jan 09, 2013 at 20:42 UTC
    Use a date/time Perl object type that is friendly to DBI and specify the date value as a parameter to the query, so that DBI will recognize that the parameter is a binary value of date/time type and will bind to the parameter accordingly. Don't present it as a character string if you can avoid it. (Strange things can happen such as code that works in America but not in Europe where the "locale" is different: is "01/09/2012" January 9th or September 1st?)
      Thats the issue, to convert a string like "01/09/2012" into this date/time Perl object type that is friendly to DBI like you mentioned.

      AM: your post sounds like the right thing. Can you please give a little code example, how to do it?

      Many TIA
      Helen

Re: Date Convert
by mhearse (Chaplain) on Jan 09, 2013 at 21:34 UTC
    Why not use epoch? Can be handled with a unsigned int data type.