是否可以在MYSQL数据库的列中默认插入php time()值?

时间:2011-01-04 08:40:28

标签: php mysql time

我的简单问题是..是否可以在MYSQL数据库的列中默认插入 php time()值,这样每次我都不需要插入它。我知道MYSQL提供CURR_TIMESTAMP ..但它们不会存储为整数,而不像时间函数那样给出时间戳为整数。

任何帮助将不胜感激...谢谢

4 个答案:

答案 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