mysql 设置默认的时间值_Mysql

所以以

复制代码 代码如下:

create_time datetime default now()

的形式设置默认值是不可能的。
代替的方案是使用TIMESTAMP类型代替DATETIME类型。
CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段不会改变。
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段将会改变。即时间变为了更新时候的时间。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)如果有多个TIMESTAMP列,只有第一个自动更新。
TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。
如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
你明确地设定TIMESTAMP列为NULL.
除第一个以外的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 ;

时间: 2024-10-02 12:25:08

mysql 设置默认的时间值_Mysql的相关文章

smarty html_options 设置默认select 选值

smarty html_options 设置默认select 选值 index.php: require('Smarty.php.class'); $smarty = new Smarty; $smarty->assign('cust_options', array(    1001 => 'Joe Schmoe',    1002 => 'Jack Smith',    1003 => 'Jane Johnson',    1004 => 'Charlie Brown'))

mysql的日期和时间函数_Mysql

下面的查询选择所有 date_col 值在最后 30 天内的记录. mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday).索引值符合 ODBC 的标准. mysql> SELECT DAYOFWEEK('1998-02-03');

MySQL表字段设置默认值(图文教程及注意细节)_Mysql

环境 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' ); --以下SQL不合法 --time_d time NOT NULL DEFAULT CURTIME(), --date_e date NO

MySQL设置当前时间为默认值方法

代替的方案是使用TIMESTAMP类型代替DATETIME类型. CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段不会改变. CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段将会改变.即时间变为了更新时候的时间. (注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改.)如果有多个TI

Mysql select语句设置默认值的方法_Mysql

1.在没有设置默认值的情况下: 复制代码 代码如下: SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果: 设置显示默认值: 复制代码 代码如下: SELECT userinfo.id, user_name, role, adm_regionid, IFNUL

MySQL表字段设置默认值

环境 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' ); --以下SQL不合法 --time_d time NOT NULL DEFAULT CURTIME(), --date_e date NOT NULL DEFA

MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP

在 CYQ.Data 数据框架的反向工程中,遇到MySQL的问题又2个,记录下先.   1:对于时间的默认值,为:CURRENT_TIMESTAMP,不允许一个表存在两个日期都设置了:CURRENT_TIMESTAMP 解决的办法: 按理只设一个. 但在反向工程中,若遇到两个或以上的设置,为保证导数据的正常,直接取消日期的默认值.   2:text/blog类型不允许设置默认值,由于其它数据库类型是可以有默认值,所以转过来一般也会设置默认值,不过默认状态下不允许设置默认值. 解决的方法: 修改m

mysql里面没设置默认值字段也不允许为空,插入语句中也没指定值却能插入成功!是什么情况??

问题描述 mysql里面没设置默认值字段也不允许为空,插入语句中也没指定值却能插入成功!是什么情况?? 如题,我的表结构是这样的 SQL语句:INSERT INTO test (name) VALUES ('lsq2') 求大神帮忙!! 解决方案 后面的图片上错了, 解决方案二: 楼主你替数据库想想,又不能为null,又得是int类型,还能怎么办,数据库只能补个0. 解决方案三: 我以为是会报错,这是我本地测试的 没有报错我在正式服务器上试了报错了,说字段没有默认值.

mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案_Mysql

解决这个问题的办法有三种: 1. 增加 MySQL 的 wait_timeout 属性的值. 修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait 8hours in idle status. wait_timeout =86400 相关参数,红色部分 mysql> show variables like '%timeout%'; +--------------------------+-------+ | Vari