1

Perl を使用して、Ruby on Rails 経由で表示されるデータベースにデータを入力しています。データベースは、Rails 移行によって作成されました。

Railsの「created_at」日付規則に合わせてPerlでフォーマットされた日付文字列がありますが、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";
4

2 に答える 2

4

Perlprintfはフォーマットされた文字列を返しません:

(出力レコード区切り記号) が追加されないprint FILEHANDLE sprintf(FORMAT, LIST)ことを除いて、 と同等です。$\

したがって、最終的には返さ$rails_timeれるものprintになります(おそらく1)。sprintfISO-8601 っぽいタイムスタンプを生成するために使用したい場合:

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

$rails_timeMySQL はそれをタイムスタンプ値として喜んで受け入れます。

于 2012-04-24T04:09:13.823 に答える
1

(Perlで配布)ではるかに簡単Time::Piece

use Time::Piece qw(localtime);
localtime->strftime('%F %T');
# returns string '2012-04-24 12:11:31'
于 2012-04-24T10:11:31.863 に答える