サーチ…


備考

分数秒のデータ型を持つカラムを宣言するには、MySQLバージョン5.6.4以降が必要です。

たとえば、 DATETIME(3)はタイムスタンプでミリ秒の解像度を、 TIMESTAMP(6)は* nixスタイルのタイムスタンプでマイクロ秒の解像度をDATETIME(3)ます。

これを読んでください: http : //dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html

NOW(3)はMySQLサーバーのオペレーティングシステムから現在の時刻をミリ秒精度で表示します。

(* 0.001のようなMySQLの内部分数計算は常にIEEE754倍精度浮動小数点として扱われるので、Sunが白い矮星になる前に精度を失うことはありません)。

ミリ秒の精度で現在の時刻を取得する

SELECT NOW(3)

トリックを行う。

Javascriptのタイムスタンプのような形で現在の時刻を取得します。

Javascriptタイムスタンプは、由緒正しいUNIXのtime_tデータ型に基づいており、 1970-01-01 00:00:00 UTC以降のミリ秒数を示し1970-01-01 00:00:00

この式は現在の時刻をJavascriptのタイムスタンプ整数として取得します。 (これは、現在のtime_zone設定に関係なく正しく実行されます)。

 ROUND(UNIX_TIMESTAMP(NOW(3)) * 1000.0, 0)

TIMESTAMP値が列に格納されている場合は、UNIX_TIMESTAMP()関数を使用して整数Javascriptタイムスタンプとして取得できます。

  SELECT ROUND(UNIX_TIMESTAMP(column) * 1000.0, 0)

列にDATETIME列が含まれていて、その列をJavascriptタイムスタンプとして取得すると、それらのタイムスタンプは保存されているタイムゾーンのタイムゾーンオフセットによってオフセットされます。

サブ秒の時間を格納する列を持つテーブルを作成します。

CREATE TABLE times (
     dt DATETIME(3), 
     ts TIMESTAMP(3)
 );

ミリ秒精度の日付/時刻フィールドを持つテーブルを作成します。

 INSERT INTO times VALUES (NOW(3), NOW(3));

ミリ秒精度のNOW()値を含む行をテーブルに挿入します。

 INSERT INTO times VALUES ('2015-01-01 16:34:00.123','2015-01-01 16:34:00.128');

特定のミリ秒の精度値を挿入します。

この関数を使用して高精度の時間値を挿入する場合は、 NOW()ではなくNOW(3)使用する必要があることに注意してください。

ミリ秒精度の日付/時刻値をテキストに変換します。

%fは、 DATE_FORMAT()関数の分数精度書式指定子です。

SELECT DATE_FORMAT(NOW(3), '%Y-%m-%d %H:%i:%s.%f')

分数マイクロ秒で2016-11-19 09:52:53.248000ような値を表示します。 NOW(3)を使用したため、端数の最後の3桁は0です。

JavascriptタイムスタンプをTIMESTAMP列に格納する

Javascriptのタイムスタンプ値( 1478960868932など)がある場合は、その値をMySQLの分数時間の値に変換できます。

FROM_UNIXTIME(1478960868932 * 0.001)

この種の表現を使用して、JavascriptタイムスタンプをMySQLテーブルに格納するのは簡単です。これを行う:

INSERT INTO table (col) VALUES (FROM_UNIXTIME(1478960868932 * 0.001))

(明らかに、他の列を挿入する必要があります)。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow