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

Replies are listed 'Best First'.
Re: MySQL timestamp
by belg4mit (Prior) on Apr 17, 2002 at 02:54 UTC
Re: MySQL timestamp
by joealba (Hermit) on Apr 17, 2002 at 03:21 UTC
    Now that you've got some good answers...

    Why do you want to do this? If you're updating data in a MySQL table and you want to update a timestamp too, consider using the timestamp column type. It automatically updates any time a record is changed.

    If it's not that, then what are you doing that requires this MySQL timestamp variable in Perl? I'm interested now...
Re: MySQL timestamp
by Anonymous Monk on Apr 17, 2002 at 03:15 UTC
    use Date::Calc qw/Today_and_Now/; my $stamp = sprintf '%04d%02d%02d%02d%02d%02d', Today_and_Now();
Re: MySQL timestamp
by JayBonci (Curate) on Apr 17, 2002 at 05:27 UTC
    This really isn't a perl solution (it is another way to do it), but you can always do something like
    $dbh->do("SELECT NOW()");
    That will even avoid problems if the clock on your sql machine and the clock on your server are off (even by a few seconds). Always go with what your datasource says, or use a time server to sync them up.

        --jb
Re: MySQL timestamp
by strat (Canon) on Apr 17, 2002 at 09:55 UTC
    Btw: if you just insert NULL (or nothing) into a timestamp field, the actual date is used by the mysql-server instead.

    Best regards,
    perl -le "s==*F=e=>y~\*martinF~stronat~=>s~[^\w]~~g=>chop,print"

Re: MySQL timestamp
by darkphorm (Beadle) on Jun 24, 2002 at 22:16 UTC
    Some useful functions that I've made to deal with timestamps
    sub TimeFormatHash{ ($pattern, %hash) = @_;
    $output = $pattern;
    $output =~ s|(\w+)|$hash{$1}|gs;
    return $output;
    }
    sub TimeHash{ (@timevar) = @_;
    my %TIME;
    ($TIME{sec}, $TIME{min}, $TIME{hour}, $TIME{day},
    $TIME{month}, $TIME{year}, $TIME{wday}, $TIME{yday}, $TIME{isdst} ) = @timevar; $TIME{year}=1900 + $TIME{year}; #Allows full date, Y2K
    $TIME{month} ++; #Month starts at 0, so +1 for calendar month
    $TIME{wday} ++; #Weekday starts at 0, so +1 for calendar weekday (1=Sunday)
    if ($TIME{month} < 10)
    {$TIME{month} = "0" . $TIME{month}; }#append 0 to start of month
    if ($TIME{day} < 10)
    {$TIME{day} = "0" . $TIME{day}; } #append 0 to start of day
    return %TIME;
    }
    You can use then like:
    my %now = TimeHash(gmtime() );
    my $this_date = TimeFormatHash("year/month/day", %now );