我使用Perl填充将通过Ruby on Rails显示的数据库。数据库是通过Rails迁移创建的。
我有一个用Perl格式化的日期字符串,以适应Rails" created_at"约会,但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";
答案 0 :(得分:4)
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
作为时间戳值。
答案 1 :(得分:1)
使用Time::Piece
(与Perl一起分发)更容易:
use Time::Piece qw(localtime);
localtime->strftime('%F %T');
# returns string '2012-04-24 12:11:31'