0

I have data in the format of both "2013-01-17 18:46:47 -0800" and "1358477089" ...I'm wondering what is the best way to store this in a mysql db, that allows me to select results within a certain month, week, day etc.. using mysql's own functions.

Currently my create table code is like this.. the "timestamp" needs changing.

visible

CREATE TABLE IF NOT EXISTS `votes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `from` varchar(32) NOT NULL,
  `username` varchar(32) NOT NULL,
  `address` varchar(16) NOT NULL,
  `timestamp` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
4

2 に答える 2

5

最善の方法は、MySQL 組み込みのDATETIMEタイプを使用することです。

MySQL には、特定の月、週、日など、必要に応じて結果を選択できる多くの機能があります。

ここで関数の素晴らしいリストを参照してください:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

hek2mglや他の人が述べたように、 TIMESTAMPもあります。

MySQL は、保存のために TIMESTAMP 値を現在のタイム ゾーンから UTC に変換し、取得のために UTC から現在のタイム ゾーンに戻します。(これは、DATETIME などの他の型では発生しません。)
TIMESTAMP 値を格納し、タイム ゾーンを変更して値を取得すると、取得した値は格納した値とは異なります。

DATETIMEを使用することをお勧めします。

于 2013-01-18T15:03:56.983 に答える
1

タイムスタンプを使用する場合、フィールドは varchar ではなく「整数」にする必要があります。これにより、パフォーマンスが向上します (たとえば、この列にインデックスを使用する場合)。

1970 年より前の日付が必要ない場合は、日時ではなくタイムスタンプを使用することをお勧めします。使いやすくなっています。

PHP

$timestamp = date('U'); 

MySQL

INSERT INTO table SET timestamp = UNIX_TIMESTAMP()
于 2013-01-18T15:09:57.427 に答える