数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam相关的知识,希望对你有一定的参考价值。
数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestamp的吗?我之前用datetime类型的,总报错。
create table share (id int primary key auto_increment,
name varchar(100),
addrip varchar(50),
savetime datetime not null default now(),
other varchar(50));
这是代码,时间那一行有问题,大家给看看.
应该用timestamp,建表SQL改动如下:
CREATE TABLE share (id INT(11) PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(100),
addrip VARCHAR(50),
savetime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
other VARCHAR(50)
);
SQL中关键字尽量大写,如果你用SQLyog它会自动把关键字转换为大写;
name是保留字,虽然没有影响,但是不能保证以后没有影响,如果使用关键字、保留字做字段,最好加上``符号包裹,以免出错。所有自己命名的地方,都可以使用``符号包裹;
另外,每个字段最好使用 COMMENT '内容',给每个字段加上注释,这样以后看到的时候不会想不起来字段的含义。
报错是你程序映射的问题吧
now()
mysql建表时怎样设置datetime类型的字段默认值为不自动更新的系统当前时间
只在插入数据的时候记录一次,之后不会自动改动
MySQL 中,默认值无法使用函数也就是你无法 设置某一列,默认值是 NOW () 这样的处理
假如需要 某列的默认值为 当前数据库时间,那么可以使用 TIMESTAMP 数据类型。插入的时候,填写 null 即可。
mysql> create table testA ( dt TIMESTAMP );
Query OK, 0 rows affected (0.09 sec)
mysql> insert into testA VALUES( null );
Query OK, 1 row affected (0.01 sec)
mysql> insert into testA VALUES( null );
Query OK, 1 row affected (0.08 sec)
mysql> select * from testA;
+---------------------+
| dt |
+---------------------+
| 2011-10-15 20:30:35 |
| 2011-10-15 20:30:36 |
+---------------------+
2 rows in set (0.00 sec)
注: 上面的 SQL 是 2011-10-15 执行的,不是今天执行的。 参考技术A my_time datetime
——————————
INSERT INTO my_tb(my_time)
VALUES(now());
插入之后时间是不会变的呀!除非你又执行了什么语句把它的值更新了 。
以上是关于数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam的主要内容,如果未能解决你的问题,请参考以下文章