我有这个MYSQL表:
[ID] [TIMESTAMP] [TIME]
[1] [2010-05-29 01:17:35] []
[1] [2010-05-29 01:23:42] []
......等等
现在我需要将TIMESTAMP值复制到TIME行。新的TIME行是通过PHP命令time();
创建的问题:我不知道该怎么做。也许我是MySQL命令,可能是通过PHP?请帮帮我!
我的表:
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`ip` int(10) unsigned NOT NULL,
`name` varchar(40) NOT NULL,
`comment` text NOT NULL,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`email` varchar(30) NOT NULL,
`time` int(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `news_id` (`m0arid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17198 ;
目标:我想删除Timestamp的事情。正如我所见,时间更好。
PS:如果你有一般性提示,请看这张表,请告诉我:)。
答案 0 :(得分:2)
您可以使用以下函数在日期和Unix时间戳之间来回切换(不要与MySQL的TIMESTAMP
列类型混淆):
关于你的表,嗯,我认为将日期存储为整数几乎没用。如果不事先进行转换,则无法进行任何日期计算(甚至显示为日期)。此外,PHP中的Unix时间戳不是非常便携:某些平台甚至不允许在1970年之前存储日期......
答案 1 :(得分:2)
如果您计划按照类型(int(100)
)的建议将日期的unix时间戳存储在时间列中,那么这完全没有任何意义。
在内部,Timestamp列使用MySQL作为Unix时间戳存储。以下引用(来自http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_unix-timestamp):
当在TIMESTAMP列上使用UNIX_TIMESTAMP()时,该函数直接返回内部时间戳值,没有隐式的“字符串到Unix时间戳”转换。
证明了我的观点。
执行查询时看到的结果只是MySQL试图打印信息。
我建议您在确实需要将值作为时间戳时保留时间戳列并在查询中使用UNIX_TIMESTAMP(timestamp)
。
答案 2 :(得分:2)
我建议使用PHP date()函数而不是time()。将MySQL数据库中的'time'属性更改为datetime的数据类型。在您需要记录时间的PHP中,使用:
date("Y-m-d H:i:s");
这将生成一个完全符合MySQL日期时间数据类型格式的字符串。
(例如“2011-03-02 08:04:32”)。
答案 3 :(得分:0)