我的简单问题是..是否可以在MYSQL数据库的列中默认插入 php time()
值,这样每次我都不需要插入它。我知道MYSQL提供CURR_TIMESTAMP
..但它们不会存储为整数,而不像时间函数那样给出时间戳为整数。
任何帮助将不胜感激...谢谢
答案 0 :(得分:3)
示例:
drop table if exists file_events;
create table file_events (
id int unsigned auto_increment not null,
file_id int unsigned not null,
event_time int unsigned not null default UNIX_TIMESTAMP(), # the field that defaults to "now"
primary key(id),
constraint foreign key fk_file_events_to_sam_files (file_id) references files(id) on delete cascade
) ENGINE=InnoDB;
答案 1 :(得分:1)
如果您想在mysql基础上执行此操作,您可以始终使用触发器[http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html],只需创建一个触发器,将您选择的列设置为当前时间戳
答案 2 :(得分:0)
您应该坚持使用MySQL时间戳并根据需要进行转换。这很容易......
strtotime("put the mysql timestamp here");
将生成与
相同的格式(unix时间戳)time();
答案 3 :(得分:0)
与许多其他DBMS不同,MySQL不支持将函数作为默认值。唯一的例外是你提到的那个:日期接受CURRENT_TIMESTAMP
(或其中一个值)。在我看来,无论如何,这是一个非常可接受的解决方案,因为您可以轻松地即时转换Unix时间戳:
SELECT foo_id, foo_info
FROM foo
WHERE FROM_UNIXTIME(1294133369)<=foo_date
或者,来自PHP:
$sql = "SELECT foo_id, foo_info
FROM foo
WHERE '" . date('Y-m-d H:i:s', 1294133369) . "')<=foo_date";
无论如何,如果您绝对需要将日期存储为整数,则必须编写自己的触发器。这是一个很好的例子:
http://mysqldatabaseadministration.blogspot.com/2006/01/playing-with-triggers.html