2017-02-20 12 views
1

私はマイクロ秒timestamp = 1484923604957が存在し、DateTimeオブジェクトを作成するか、日付だけを作成してから、カラムdbのテーブルにcreated_at - datetimeを設定します。私はDBの型フィールドを変更したくありません。今、私は2017-01-20 14:46:44phpマイクロ秒をDateTimeに変換して戻す

持ってこの

 $seconds = $mil/1000; 
    return date("Y-m-d H:i:s", $seconds); 

のようにしてDBに日付に変換したときに

 $dateTimeClass = date_create_from_format('Y-m-d H:i:s', $date); 
    return $dateTimeClass; 

とにおけるマイクロ

created_at = "2016-12-29 14:42:05" 

私は作成せずに日付のDateTimeを持っています応答

$dateTimeClass->getTimestamp()*1000 

これはマイクロ秒で、バックマイクロ秒にDatTime(または日付)に変換修正するためにどのよう

最後のマイクロ秒のですか?

答えて

0

created_atのdbフィールドタイプをDATETIMEからDATETIME(6)に変更する必要があります。これがなければ、データベースに格納されないため、正確な時間はマイクロ秒単位で取得されません。

+0

私は '' created_at' datetime NOT NULL、 ''どのタイプはDATETIME(6)ですか、どうやって変更するのですか? –

+0

@ shuba.ivanはこれを参照してくださいhttp://stackoverflow.com/questions/26299149/timestamp-with-a-millisecond-precision-how-to-save-them-in-mysql –

0

マイクロ秒でオブジェクトを作成した場合は、$dateTime->format('u')を使用してオブジェクトをマイクロ秒に変換できます。 the documentation for dateを参照してください。

マイクロ秒(PHP 5.2.2で追加)。 DateTimeが整数パラメータをとるので、date()は常に000000を生成します。DateTime :: format()は、DateTimeがマイクロ秒で作成されていればマイクロ秒をサポートします。

+0

In db '2017-01-20 14 :46:44.000000' '$ dateTime-> format( 'u')=> result = 000000'しかし、' timestamp = 1484923604957'のように必要です –

+0

エポックタイムスタンプが必要なら、 'format( 'U')' – nvisser

関連する問題