我正在使用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
作为时间戳值。