使用Perl更新Ruby on Rails“created_at”日期

时间:2012-04-24 03:53:19

标签: mysql ruby-on-rails perl

我使用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";

2 个答案:

答案 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'