我有一个html / php表单,用于更新数据库服务器上的条目。我需要在每行添加一个字段,指示何时添加该条目,换句话说,就是创建条目的时间戳。我一直在寻找并发现:
http://www.createafreewebsite.net/phpmysql/alter.html
我会做类似的事情吗?
$timestamp = time();
mysql_query("ALTER TABLE notification
ADD timestamp CHAR(30) AFTER names);
mysql_query("INSERT INTO notification (`timestamp`) values ('$timestamp');
这是接近它的正确方法,我使用正确的数据类型吗?我需要将时间戳与稍后从javascript文件生成的另一个时间戳进行比较。例如,如果timestamp1小于timestamp2而不是执行以下函数...
任何信息都会有所帮助,谢谢!
编辑:
按要求提供信息:
到目前为止,我有:
mysql_query("INSERT INTO notification (`program`, `month`, `day`, `year`, `sponsor`, `type`, `category`, `range`, `desc`) values ('$pName' , '$month' , '$day' , '$year' , '$sponsor' , '$type' , '$category' , '$range' , '$desc')");
答案 0 :(得分:4)
time()
将产生一个时间戳,你的MySQL表可能会有另一种格式,所以你可以这样做:
mysql_query("INSERT INTO notification (`timestamp`) values (NOW());
它也适用于日期和日期时间字段。
即使你的表是CHAR(30),你仍然可以使用一个较少的变量。
如果您将列数据类型更改为TIMESTAMP
,那么您可以使用on update CURRENT_TIMESTAMP
为您填充表格单元格。
答案 1 :(得分:1)
timestamp应该有timestamp数据类型。 http://dev.mysql.com/doc/refman/5.0/en/datetime.html
答案 2 :(得分:1)
您绝对不希望使用具有CHAR或VARCHAR数据类型的列来存储日期或时间戳 - 以后可能会使比较变得困难。此外,您应该考虑在timestamp
列上放置一个默认值,以便在插入行时自动填充它,或者使用notification
表上的插入触发器来填充。这样就减少了开发人员错误的可能性。
CREATE TRIGGER notification_timestamp BEFORE INSERT
ON notification FOR EACH ROW
BEGIN
SET new.timestamp = NOW();
END;
如果语法不正确,请道歉。