-
通常、どちらも実行しないでください。データベース層のデータ型は、それ自体で(可能な限り)意味があり、アプリケーションに依存して解釈されないようにする必要があります。 @JimDeLaHuntが言うように 、これにより、データベースは必要に応じてSQLからそれらを簡単に操作/解釈できます(また、将来、別のアプリケーションコードベースから同じデータに簡単にアクセスできるようになります)。
MySQLには
5つの時間タイプ があります 、日付と時刻の両方を保存するのは2つだけです: DATETIME
およびTIMESTAMP
。他の人がほのめかしているように、違いはタイムゾーンを保存するかどうかにあります-それを見るのはかなり紛らわしい方法だと思いますが:
-
TIMESTAMP
セッションのtime_zone
を使用します 入力をUTCタイムスタンプに変換し、再び出力に戻す変数。正確な瞬間を指定するのに便利です。 -
DATETIME
カレンダーや時計の写真を撮るのと同じように、タイムゾーンに関係なく日付と時刻を保存するだけです。同じ現地時間でグローバルに発生するイベントを指定するのに便利です。
-
-
他の列を宣言するのと同じように、列名の後に関連するデータ型を指定します。
TIMESTAMP
に注意してください 自動更新 などの追加機能があります 、必要に応じて、列宣言で無効にすることができます。 -
上記の時間タイプのいずれかを使用すると、これらすべてを実行できます(日付関数 要求に応じ)。
TIMESTAMP
のデフォルト出力 およびDATETIME
typesは、'YYYY-MM-DD HH:MM:SS'
の文字列です。 フォーマット。特に、2つの値を比較することによる「経過時間」は、たとえばMySQLの
TIMEDIFF()
機能:SELECT TIMEDIFF(end, start) AS elapsed FROM my_table WHERE ...