вставка даты в MySQL с использованием Perl - PullRequest
0 голосов
/ 16 октября 2011

У меня есть следующий код:

    my $tdate = $fields[0]; 
print "$tdate\n"; 
my $trade_dt=UnixDate($tdate,"%Y-%m-%d"); 
# my $trade_dt = DATE(\"$tdate\"); 
print "$trade_dt\n"; 
my $ins_rec = "INSERT IGNORE INTO $tblname(\`trade_dt\`,\`symbol\`) va +lues (?,?);"; 
my $sth=$dbh->prepare($ins_rec); 
$sth->execute($trade_dt,$symbol); 
$sth->finish;

и когда я запускаю его, я получаю следующее сообщение:

"10/14/2011" Use of uninitialized value $trade_dt in concatenation (.) or string at + Set.data.pl line 42, <FIN> line 1.

любые мысли о том, как я могу это исправить .... это, очевидно, правильное чтение даты из файла, поскольку оператор печати показывает правильную дату для tdate, который читает из файла csv, который у меня есть, но преобразование в trade_dt это не правильно, правда?

1 Ответ

1 голос
/ 16 октября 2011

Кажется, UnixDate() возвращает undef, потому что не может проанализировать дату, которую вы ему даете. Я подозреваю, что проблема в том, что ваша строка даты окружена двойными кавычками, и они отбрасывают парсер. Избавьтесь от кавычек (используя что-то вроде $tdate =~ s/^"(.*)"$/$1/;) и посмотрите, поможет ли это.

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