Конвертируйте дату Unix «Ср 15 сен 14:21:36 2010» в метку времени unix в perl или MySQL для хранения в mySQL - PullRequest
0 голосов
/ 04 ноября 2011

Я пытаюсь преобразовать обычную дату Unix в удобочитаемом формате обратно в метку времени Unix без создания массивов для месяцев и дней недели.Очевидно, что "%" необходимо экранировать в Perl, который я пробовал "%%", "\%" и RTM, и именно так я получил \ %%

$myDate="Wed Sep 15 14:21:36 2010";
$datePattern="\%%a \%%b \%%e \%%H:\%%i:\%%s \%%Y";

MySQLfunction

UNIX_TIMESTAMP (STR_TO_DATE (\'$myDate\' \, \'$datePattern\'))";

Мое последнее утверждение выглядит следующим образом: команда работает напрямую из mySQL, но не когда я вызываю ее из perl.

replace mytable values ('some value', UNIX_TIMESTAMP (STR_TO_DATE (\'$myDate\' \, \'$datePattern\')))";

Ответы [ 3 ]

1 голос
/ 04 ноября 2011

Попробуйте Дата :: 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";
1 голос
/ 04 ноября 2011

Другим вариантом может быть использование 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:%S\n");
0 голосов
/ 04 ноября 2011

Один из вариантов будет использовать Дата :: Parse :

use strict;
use warnings;

use Date::Parse;

my $date = "Wed Sep 15 14:21:36 2010";
my $time = str2time($date);

Оттуда вы можете выполнить запрос, который обновляет записи базы данных для использования $time.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...