我正在使用Perl填充一个将通过Ruby on Rails显示的数据库。数据库是通过Rails迁移创建的。
我有一个Perl格式的日期字符串,以适应Rails的“created_a t”日期约定,但是MySQL不允许这样做。有办法做到这一点吗?

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$rails_time = printf ("%4d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec);
print "$rails_time\n";

最佳答案

Perl的printf不返回格式化字符串:
相当于print FILEHANDLE sprintf(FORMAT, LIST),但未附加$\(输出记录分隔符)。
因此,您的$rails_time最终将成为print返回的结果(很可能是1)。您想使用sprintf生成您的ISO-8601-ish时间戳:

$rails_time = sprintf("%4d-%02d-%02d %02d:%02d:%02d", $year + 1900, $mon + 1, $mday, $hour, $min, $sec);

MySQL很乐意接受$rails_time作为时间戳值。

10-08 05:11