2016-09-17 13 views
1

データベースをSQLからMySQLに変換する必要がありましたが、これは成功しましたが、この問題は現在MySQL向けのものです。TIMESTAMPとDATETIME MySQL

私はTimestamp列型にDateTime文字列を挿入することができるよということに気づいて、それがすべての罰金と良いことだ、私はタイムスタンプのDateTimeまたは実際のタイムスタンプのいずれかを受け入れることを聞くものとは、しかし、私は"ON UPDATE CURRENT_TIMESTAMP"について興味今はTimestampタイプでしか使用できないので、データベースの列に置いています。これはに基づいて更新するとき、YYYY-MM-DD HH:MM:SSの形式ではないタイムスタンプを使用しますか?

このデータは、この列から正確に引き出すデータにどのように影響しますか?

たとえば、日付が数字のタイムスタンプである場合はDATETIME形式のものがあり、日付の日付がDATETIME形式である場合は、TIMESTAMP列から現在の日付/時刻を取得するのは難しいでしょうか? ON_UPDATEデータベースからの混合データの問題を避けることができない場合は、この列のタイプとしてDATETIMEを使用するだけですか?

答えて

2

内部的には、TIMESTAMPのデータは、Unix epochから秒数を示す4バイトの整数として格納されます。ソフトウェアに表示される内容は、ソフトウェアがこのデータをどのように表示するかによって異なります。たとえば、あなたのタイムゾーンを別のものに変更すると、TIMESTAMP列から読み取られたデータに影響します(UnixエポックはUTCです)

データが混在することはありません。 MySQLはYYYY-MM-DD HH:MM:SSをタイムスタンプに変換します。しかし、タイムゾーンには注意してください!

TIMESTAMPのカラムをクエリするとき、MySQLはデフォルトで人間が読める形式でそれらをフォーマットするので、整数をこれらから得ることは期待しないでください。 DATETIMEフィールドのように、YYYY-MM-DD HH:MM:SSにフォーマットされた文字列を取得します。

+0

今、私はいくつかの列をTIMESTAMPに変更しましたが、Mysqlはそれらをまだ 'YYYY-MM-DD HH:MM:SS'という形式の文字列として表示しているため、何も変換されませんでした。 –

+0

変換されました。私を信頼してください:)それはあなたのクライアントだけが人間にやさしい形式でこれを示しています。 – Mchl

+0

phpMyAdminを使用すると、それらは 'YYYY-MM-DD HH:MM:SS'文字列として表示されます。また、PHPを介してデータベースからこれらを取得する最良の方法は、私は 'strtotime'関数を使用して、時間に変換する必要がありますか? –