mysql 建表时设置默认当前时间
把字段的类型设置为 timestamp 类型,每次添加数据时不用手动添加,自动设为当前时间
修改日期类型为timestamp 并允许空,如下:
CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestamp NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT
CHARSET=utf8;
如果是在navicat下操作的话,设置字段的类型为timestamp,默认值写上CURRENT_TIMESTAMP
扩展资料
mysql中的时间类型:
mysql中我们用的时间类型有DATE DATETIME TIME TIMESTAMP四种:
1、DATE只表示日期,检索以YYYY-MM-DD的格式显示,范围是1000-01-01到9999-12-31。
2、TIME只表示时间,检索以HH:MM:SS格式显示,范围是00:00:00到23:59:59。
3、DATETIME表示了日期和时间,检索以YYYY-MM-DD HH:MM:SS格式显示。
4、TIMESTAMP和DATETIME表示格式一样两者的不同点如下:
当使用timestamp的时候,数据有更新的时候这个字段自动更新为当前时间,所以可以作为lastmodify使用,这个变化是默认设置,如果想使时间不更新可以设置DEFAULT CURRENT_TIMESTAMP
timestamp的范围不能早于1970或者晚于2037,超过这个时间范围的话为0。
timestamp存储的时候是转为UTC存储的,获取的时候根据客户端所在时区进行展示。
timestamp占4个字节,datetime占8个字节。
默认值, 不允许使用 函数
下面是 例子
mysql> CREATE TABLE test_wang (
-> ID INT,
-> date1 VARCHAR(20),
-> date2 VARCHAR(20)
-> );
Query OK, 0 rows affected (0.01 sec)
-- 对列插入 随机数. 确认 数据是可以存储的.
mysql> insert into test_wang values (1, rand(), rand());
Query OK, 1 row affected (0.00 sec)
mysql> select * from test_wang;
+------+-------------------+-------------------+
| ID | date1 | date2 |
+------+-------------------+-------------------+
| 1 | 0.770875269333716 | 0.351427750989262 |
+------+-------------------+-------------------+
1 row in set (0.00 sec)
-- 这里尝试 设置 列 默认值 为 随机数, 结果失败了.
mysql> ALTER TABLE test_wang
-> MODIFY COLUMN date1
-> VARCHAR(20)
-> DEFAULT RAND() ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'RAND()' at line 4
-- 设置默认值 为 固定值, 是成功的.
mysql> ALTER TABLE test_wang
-> MODIFY COLUMN date1
-> VARCHAR(20)
-> DEFAULT '123' ;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE test_wang;
-- 如果是 日期的话, 尝试使用 TIMESTAMP 数据类型
-- 来实现这个功能.
mysql> CREATE TABLE test_wang (
-> id INT UNSIGNED AUTO_INCREMENT,
-> date1 TIMESTAMP,
-> date2 TIMESTAMP,
-> PRIMARY KEY(id)
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> insert into test_wang(date1) VALUES (null);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test_wang;
+----+---------------------+---------------------+
| id | date1 | date2 |
+----+---------------------+---------------------+
| 1 | 2011-10-12 11:30:26 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)
date1 VARCHAR default CURRENT_TIMESTAMP,
mysql中默认值可以用函数,
例如:
CREATE TABLE IF NOT EXISTS results
(examDate TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '考试时间'
)COMMENT='成绩表';
衷脉西帕: 把字段的类型设置为 timestamp 类型,每次添加数据时不用手动添加,自动设为当前时间
陈仓区15049288999: MySQL 建表自动添加当前系统时间 - ?
衷脉西帕: CREATE TABLE `test`.`tabletest` ( `id` INT NOT NULL , `d` TIMESTAMP NOT NULL DEFAULT current_timestamp , PRIMARY KEY (`id`) ); insert into test.tabletest (idtest.tabletest)values(1); SELECT * FROM `test`.`tabletest`;1 2011-09-20 20:49:51
陈仓区15049288999: 如何将MYSQL字段设置成默认当前时间戳 - ?
衷脉西帕: 如果是日期字符串类型就是~CREATE TABLE 表名(time datetime NOT NULL DEFAULT NOW(),...) 如果是时间戳~CREATE TABLE 表名(time int NOT NULL DEFAULT CURRENT_TIMESTAMP(),...) -----希望对你有帮助~如果是插入的时候的话~在对应值上填写NOW()/CURRENT_TIMESTAMP() 也是可以的
陈仓区15049288999: 如何设置 Mysql中的datetime的默认值 - ?
衷脉西帕: 问题:MySQL datetime数据类型设置当前时间为默认值 解决:-- 方法一:由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.代替的方案是使用TIMESTAMP类型代替...
陈仓区15049288999: 数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam - ?
衷脉西帕: 应该用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 ...
陈仓区15049288999: mysql 设置字段默认值为当前时间加5分钟 - ?
衷脉西帕: CREATE TABLE `test1` ( `a` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `b` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `c` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)) ENGINE=...
陈仓区15049288999: mysql怎么设置默认时间为系统时间? - ?
衷脉西帕: now()就是默认的系统时间.
陈仓区15049288999: mysql为什么不能为时间设置默认值 - ?
衷脉西帕: -- 方法一: 由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.代替的方案是使用TIMESTAMP类型代替DATETIME类型. TIMESTAMP列类型自动地用当前的日期和时间标记...
陈仓区15049288999: 使用hibernate怎么在mysql内自动加上当前时间 - ?
衷脉西帕: 建表的时候 就设置 那个字段 默认为当前时间啊!将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可、 呵呵……
陈仓区15049288999: MySQL 默认时间约束 语句 - ?
衷脉西帕: msg id integer auto increment 主键 content varchar(45) senddate datetime 写入insert into msg (content) values ('123') 主键id 自动增长不用管 content写入了值 '123' senddate自动就是当前的时间