2017-12-29 46 views
0
select from_unixtime(floor(1510156036741/1000), '%Y %D %M %h:%i:%s'); 

'2017年11月8日七時47分16秒'は、上記のコードは、ミリ秒の精度を備えていないタイムスタンプを出力日時(3)

へのMySQLのBigInt(20)は、UNIXエポック時間を変換します。私は、どのようにしてミリ秒を含むdatetime(3)オブジェクトにUnixのエポックタイムを変換するのですか?

それはのようなマイクロ秒を取得することが可能です:

select from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s %f'); 

「2017年11月8日7時47分16秒741000」

はミリ秒にマイクロ秒の結果を変換することが可能ですか?

+0

ので、そのためのフォーマットコードはありません、私はちょうどマイクロ秒の最後の3文字を破棄したいと思います。あなたが丸めたい場合はさらに複雑になりますが、切り詰めはしません。 –

+0

マイクロ秒コードの最後の3文字を1000で除算して破棄しようとしました:select from_unixtime(floor(1510156036741/1000)、 '%Y%D%M%h:%i:%s' '%f'/1000)。 クエリは何も出力しませんでした。最後の3文字はどのように破棄しますか? – ajasif

+0

数値演算ではなく文字列演算を使用します。すなわち「SUBSTR」。 Moobの答えは別のアプローチです。 –

答えて

1

これはちょっと大変ですが、マイクロ秒を抽出して1000で割ってミリ秒に変換することができます。ここで私はまた、int型にキャストして、最終的な日付文字列を作成するためにフォーマットされた日付とそれを連接しました:

SELECT CONCAT(
    from_unixtime(1510156036741/1000, '%Y %D %M %h:%i:%s '), 
    CAST(EXTRACT(MICROSECOND FROM from_unixtime(1510156036741/1000))/1000 
    AS SIGNED) 
); 

「2017年11月8日3時47分16秒741」

関連する問題