我正在尝试将人类可读格式的常规Unix日期转换回Unix时间戳,而不为一周中的月份和天数创建数组。显然,在perl中需要转义"%"我尝试了"%%"one_answers"%"和RTM,这就是我最终得到%%
$myDate="Wed Sep 15 14:21:36 2010";
$datePattern="%%a %%b %%e %%H:%%i:%%s %%Y";
MySQL有一个函数
UNIX_TIMESTAMP (STR_TO_DATE ('$myDate' , '$datePattern'))";
我最后的声明是这样的:该命令直接从mySQL中工作,但当我从perl中调用它时就不工作了。
replace mytable values ('some value', UNIX_TIMESTAMP (STR_TO_DATE ('$myDate' , '$datePattern')))";
另一个选择可能是使用Time::Piece
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $mydate = "Wed Sep 15 14:21:36 2010";
my $mytime = Time::Piece->strptime($mydate, "%a %b %e %H:%M:%S %Y");
print $mytime->strftime("%Y-%m-%d %H:%M:%Sn");
Try Date::Manip
use strict;
use warnings;
BEGIN {
$Date::Manip::Backend = 'DM5';
}
use Date::Manip;
my $myDate = "Wed Sep 15 14:21:36 2010";
print Date::Manip::UnixDate( $myDate, '%Y-%m-%d %H:%M:%S' );
或者查看DateTime模块
这是我在DateTime上的尝试。一个有mysql DateTime模块,一个没有。use strict;
use warnings;
use DateTime::Format::Strptime;
use DateTime::Format::MySQL;
my $myDate = "Wed Sep 15 14:21:36 2010";
my $Strp = new DateTime::Format::Strptime( pattern => '%a %b %e %H:%M:%S %Y', );
my $dt = $Strp->parse_datetime($myDate);
print $dt->strftime('%Y-%m-%d %H:%M:%S') . "n";
print DateTime::Format::MySQL->format_datetime($dt) . "n";
一个选项是使用Date::Parse:
use strict;
use warnings;
use Date::Parse;
my $date = "Wed Sep 15 14:21:36 2010";
my $time = str2time($date);
从那里,您可以发出一个查询,更新数据库记录以使用$time
。