2

私はPostgreSQLでLaravel 4を使用しています。移行で PostgreSQL タイムスタンプ フィールドを作成しました。

$table->dateTime('start_date');

strtotimeで生成されたタイムスタンプを挿入しようとしましたが、エラーが発生しました:

Invalid datetime format: 7 ERROR: invalid input syntax for type timestamp: "1383321600" 

それをハッキングするとうまくいきます:

new MyModel(array('start_date' => DB::raw("to_timestamp($start_date)")));

もっと良い方法があるはずです。Laravel 自体は、created_at および updated_at の自動入力日付に対して問題なくタイムスタンプを生成します。

4

3 に答える 3

0

strtotime で作成された Unix タイムスタンプは正しく変換されないようですが、真の PHP DateTime オブジェクトは正常に動作します。

同じ引数でdate_createを使用するように切り替えたので、DB::raw を使用せずに直接挿入できます。

于 2013-11-09T03:19:24.760 に答える
0

strtotime() のドキュメントは言う

この関数は、英語の日付形式を含む文字列が与えられることを想定しており、その形式を解析して Unix タイムスタンプを作成しようとします。

通常、SQL データベースでは、タイムスタンプは Unix タイムスタンプを意味しません。SQL では、標準 SQL を使用してテーブルにタイムスタンプを挿入する場合は、次のようにします。

-- Implicit use
insert into table_name (column_name)
values ('2013-01-01 08:00:00');

-- Explicit use
insert into table_name (column_name)
values (timestamp '2013-01-01 08:00:00');
于 2013-11-09T03:19:36.903 に答える