由于MySQL目前字段的默认值不支持函数,所以以
create_time datetime default now()
的形式设置默认值是不可能的。
代替的方案是使用TIMESTAMP类型代替DATETIME类型。
TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。
如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
1. 列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
2. 列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
3. 你明确地设定TIMESTAMP列为NULL.
4. 除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
另外在5.0以上版本中也可以使用trigger来实现此功能。
create table test_time (
id int(11),
create_time datetime
);
delimiter |
create trigger default_datetime before insert on test_time
for each row
if new.create_time is null then
set new.create_time = now();
end if;|
delimiter ;
mysql中如何设置默认时间为当前时间?
把日期类型 选择成timestamp 允许空 就可以了
CREATE TABLE `dtal` (
`uname` varchar(50) NOT NULL,
`udate` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
而如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可
分享到:
相关推荐
由于MySQL目前字段的默认值不支持函数
利用mysql的函数实现统计查询一天24小时的数据,然后统计时间没有的数据默认补上了零。
获得当前日期+时间(date + time)函数:now...sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now
一、函数功能:对字符串进行分隔数组,取指定顺序位置的子字符串,支持左右双向获取,支持默认值返回,附有测试用例 二、函数格式:fn_get_split_val(in_str varchar,in_delimiter varchar,in_order int,in_default ...
环境 MySQL 5.1 + 命令行工具 问题 MySQL表字段设置默认值 解决 代码如下: –SQL: CREATE TABLE test( i_a int NOT NULL DEFAULT 1, ts_b timestamp NOT NULL DEFAULT NOW(), c_c char(2) NOT NULL DEFAULT ‘1’ )...
9.10.2 日期和时间类型 9.10.3 字符串类型 9.11 进一步学习 9.12 下一章 第10章 使用MySQL数据库 10.1 SQL是什么 10.2 在数据库中插入数据 10.3 从数据库中获取数据 10.3.1 获取满足特定条件的数据 10.3.2...
1、mysql支持enum,和set类型,sql server不支持 2、mysql不支持nchar,nvarchar,ntext类型 ...7、mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur
3、数据库函数:数值处理函数round(四舍五入函数)、turncate(截取函数)、字符处理函数length(字符串/列名)、concat(列名/字符串)、日期时间处理函数curdate、curtime、sysdate、year 4、什么是视图?如何...
当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 列模式: create table temp( /*主键约束*/ id int primary key, name varchar(25) ); create table temp2( id int not null, name ...
21.1.4 使用checkdate()函数检验日期有效性 21.1.5 格式化时间戳 21.2 在PHP日期格式和MySQL日期格式之间进行转换 21.3 在PHP中计算日期 21.4 在MySQL中计算日期 21.5 使用微秒 21.6 使用日历函数 21.7 进一步学习 ...
3.DATE 日期类型:支持的范围是-01-01到-12-31。MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度 5...
因此在MySQL中要记录创建日期还得使用datetime 然后使用NOW() 函数完成!1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录和修改现有记录的时候都对这个数据列刷新2,TIMESTAMP ...
但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。 二、显示命令 1、显示数据库列表。 show databases; 刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的...
刚开始学习数据库操作,今天存数据时发现,保存的时候报错(Error 1292: Incorrect datetime value: '0000-00-00' for column 'deleted_at' at row 1) ,之后就搜索了下原因,是因为MySQL存日期时不允许出现这种格式...
9.10.2 日期和时间类型 9.10.3 字符串类型 9.11 进一步学习 9.12 下一章 第10章 使用MySQL数据库 10.1 SQL是什么 10.2 在数据库中插入数据 10.3 从数据库中获取数据 10.3.1 获取满足特定条件的数据 10.3.2...
int[M] M默认11 人为设定系统也会根据自动分配空间(类似char和varchar) bigint float[(M,D)] 10的(M-D)次方->代表最大值 D->代表保留位数不够补0 //For float(M,D), double(M,D) or decimal(M,D), M must be >=...
在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。...
应用场景: 创建时间,修改时间等默认值。 例子: mysql> select now(); +---------------------+ | now() | +---------------------+ | 2017-12-27 20:14:56 | +---------------------+ 1 row in set (0.00 sec) 1....
现象:MySQL5.7版本之后,date, datetime类型设置默认值”0000-00-00″,出现异常:Invalid default value for ‘time’ 原因:在命令行窗口查看当前的sql_mode配置: select @@sql_mode; 结果如下: ONLY_FULL_GROUP_BY...