MySQLでタイムスタンプを日時に変換する方法は?


133

MySQL に変換1300464000する方法は2011-03-18 16:00:00


2
新しい質問を投稿する前に、既存の質問/回答を検索してください。このトピックについては、すでにある程度詳しく説明しています。
ジョンパーカー

2
すでにドキュメントをご覧になりましたか?それだけです:dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

回答:


200

FROM_UNIXTIME()MySQLで関数を使用する

ミリ秒単位で保存するフレームワーク(Javaのタイムスタンプなど)を使用している場合は、1000で除算して、適切なUnix時間を秒単位で取得する必要があることに注意してください。


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )動作しません。どうして?v5.6を使用
Janus Troelsen

3
@JanusTroelsenはSELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )機能します。TIMESTAMP()整数値を返しません。
cnvzmxcvmcx 2014

4
私がこれを行って出力で混乱したからといって、MySQLはUnix時間を秒単位で保存しますが、他の多くのフレームワークはミリ秒単位(つまり、Javaのタイムスタンプ)で保存します。したがって、Unix時間にミリ秒を使用する場所からのデータでこの関数を使用する場合は、1000で除算することを忘れないでください。
Chris Thompson

64
DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%Y-%m-%d %H:%i:%s') as "Date" FROM `orders`

これは、指定された日付が次のようなエンコードされた形式の場合の究極のソリューションです 1300464000


3
これをありがとう。時間を含めるには: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

DATE_FORMAT(FROM_UNIXTIME(orderdate)、 '%Y-%m-%d')は "日付" FROM ordersが最終的な解決策になるので、私はかなり確信しています:D
Kyle

14

Janus Troelsenのコメントに答えるには

TIMESTAMPの代わりにUNIX_TIMESTAMPを使用する

SELECT from_unixtime( UNIX_TIMESTAMP(  "2011-12-01 22:01:23.048" ) )

TIMESTAMP関数はタイムスタンプではなく日付または日付時刻を返しますが、UNIX_TIMESTAMPはUNIXタイムスタンプを返します


UNIX時間とUNIX時間を比較することは明らかなようです。SELECT(CAST(DATE_FORMAT(from_unixtime(UNIX_TIMESTAMP(CURRENT_TIMESTAMP))、DATE as '%Y-%m-%d')as DATE)<CAST( '2019-05-02' AS DATE))を使用しています。日付を比較するために、2019-05 * 02のphpのフォーマット済み日時オブジェクトを置き換えます。Thnaks。
Mantisse

1
元の質問とは異なる質問には、この方法で答えないでください。
パヴェルStankowski

これは、元の質問には決して回答しません
ニコ・ハーセ


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
この仕事は私にとって

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.