Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl在MySQL中插入日期_Mysql_Perl_Date - Fatal编程技术网

使用Perl在MySQL中插入日期

使用Perl在MySQL中插入日期,mysql,perl,date,Mysql,Perl,Date,我有以下代码: 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 $st

我有以下代码:

    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.
“10/14/2011”在+Set.data.pl第42行第1行的串联(.)或字符串中使用未初始化值$trade_dt。

关于如何修复它的任何想法……很明显,它从文件中正确读取了日期,因为print语句显示了从我拥有的csv文件中读取的tdate的正确日期,但转换为trade_dt是不正确的,是吗?

似乎
UnixDate()
正在返回
unde
,因为它无法解析您给出的日期。我怀疑问题在于您的日期字符串被双引号包围,它们会使解析器失效。去掉引号(使用类似于“
$tdate=~s/^”(.*)”$/$1/;
)的方法,看看这是否有帮助。

无需在SQL语句中转义反勾号。在带引号的字符串中使用反勾号时,反勾号不是特殊字符。另外,您是否考虑过在数据库交互中使用类似DBIx::Class的东西?这会让你的生活更轻松。