知识大全 MYSQL中怎样设列的默认值为Now()的介绍

Posted 时间

篇首语:少而好学,如日出之阳;壮而好学,如日中之光;老而好学,如炳烛之明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MYSQL中怎样设列的默认值为Now()的介绍相关的知识,希望对你有一定的参考价值。

MYSQL中怎样设列的默认值为Now()的介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  MySQL目前不支持列的Default 为函数的形式   如达到你某列的默认值为当前更新日期与时间的功能   你可以使用TIMESTAMP列类型  下面就详细说明TIMESTAMP列类型     TIMESTAMP列类型  TIMESTAMP值可以从 的某时的开始一直到 年 精度为一秒 其值作为数字显示   TIMESTAMP值显示尺寸的格式如下表所示      + + +  | 列类型    | 显示格式    |  | TIMESTAMP( ) | YYYYMMDDHHMMSS |   | TIMESTAMP( ) | YYMMDDHHMMSS  |  | TIMESTAMP( ) | YYMMDDHHMM   |  | TIMESTAMP( ) | YYYYMMDD    |  | TIMESTAMP( ) | YYMMDD     |  | TIMESTAMP( ) | YYMM      |  | TIMESTAMP( ) | YY       |  + + +   完整 TIMESTAMP格式是 位 但TIMESTAMP列也可以用更短的显示尺寸创造  最常见的显示尺寸是 和   你可以在创建表时指定一个任意的显示尺寸 但是定义列长为 或比 大均会被强制定义为列长   列长在从 ~ 范围的奇数值尺寸均被强制为下一个更大的偶数      列如   定义字段长度   强制字段长度  TIMESTAMP( ) > TIMESTAMP( )  TIMESTAMP( ) > TIMESTAMP( )  TIMESTAMP( ) > TIMESTAMP( )  TIMESTAMP( ) > TIMESTAMP( )    所有的TIMESTAMP列都有同样的存储大小   使用被指定的时期时间值的完整精度( 位)存储合法的值不考虑显示尺寸   不合法的日期 将会被强制为 存储     这有几个含意    虽然你建表时定义了列TIMESTAMP( ) 但在你进行数据插入与更新时TIMESTAMP列实际上保存了 位的数据(包括年月日时分秒) 只不过在你进行查询时MySQL返回给你的是 位的年月日数据 如果你使用ALTER TABLE拓宽一个狭窄的TIMESTAMP列 以前被 隐蔽 的信息将被显示    同样 缩小一个TIMESTAMP列不会导致信息失去 除了感觉上值在显示时 较少的信息被显示出    尽管TIMESTAMP值被存储为完整精度 直接操作存储值的唯一函数是UNIX_TIMESTAMP() 由于MySQL返回TIMESTAMP列的列值是进过格式化后的检索的值 这意味着你可能不能使用某些函数来操作TIMESTAMP列(例如HOUR()或SECOND()) 除非TIMESTAMP值的相关部分被包含在格式化的值中 例如 一个TIMESTAMP列只有被定义为TIMESTAMP( )以上时 TIMESTAMP列的HH部分才会被显示 因此在更短的TIMESTAMP值上使用HOUR()会产生一个不可预知的结果    不合法TIMESTAMP值被变换到适当类型的 零 值( ) (DATETIME DATE亦然)         你可以使用下列语句来验证   CREATE TABLE test ( id INT ( ) UNSIGNED AUTO_INCREMENT date TIMESTAMP ( ) PRIMARY KEY( id ));  INSERT INTO test SET id = ;  SELECT * FROM test;  + + +  | id | date      |  + + +  |  |     |  + + +  ALTER TABLE test CHANGE date date TIMESTAMP( );  SELECT * FROM test;  + + +  | id | date      |  + + +  |  | |  + + +    你可以使用TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作   如果你有多个TIMESTAMP列 只有第一个自动更新   自动更新第一个TIMESTAMP列在下列任何条件下发生      列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定    列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值 (注意一个UPDATE设置一个列为它已经有的值 这将不引起TIMESTAMP列被更新 因为如果你设置一个列为它当前的值 MySQL为了效率而忽略更改 )    你明确地设定TIMESTAMP列为NULL    除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间 只要将列设为NULL 或NOW()     CREATE TABLE test (     id INT ( ) UNSIGNED AUTO_INCREMENT      date TIMESTAMP ( )      date TIMESTAMP ( )      PRIMARY KEY( id )     );    INSERT INTO test (id date date ) VALUES ( NULL NULL);  INSERT INTO test SET id= ;  + + + +  | id | date      | date      |  + + + +  |  | | |  |  | | |  + + + +   >第一条指令因设date date 为NULL 所以date date 值均为当前时间   第二条指令因没有设date date 列值 第一个TIMESTAMP列date 为更新为当前时间     而二个TIMESTAMP列date 因日期不合法而变为     UPDATE test SET id= WHERE id= ;  + + + +  | id | date      | date      |  + + + +  |  | | |  |  | | |  + + + +   >这条指令没有明确地设定date 的列值 所以第一个TIMESTAMP列date 将被更新为当前时间    UPDATE test SET id= date =date date =NOW() WHERE id= ;  + + + +  | id | date      | date      |  + + + +  |  | | |  |  | | |  + + + +   >这条指令因设定date =date 所以在更新数据时date 列值并不会发生改变   而因设定date =NOW() 所以在更新数据时date 列值会被更新为当前时间   此指令等效为 UPDATE test SET id= date =date date =NULL WHERE id= ;     因MySQL返回的 TIMESTAMP 列为数字显示形式   你可以用DATE_FROMAT()函数来格式化 TIMESTAMP 列    SELECT id DATE_FORMAT(date %Y %m %d %H:%i:%s ) As date       DATE_FORMAT(date %Y %m %d %H:%i:%s ) As date FROM test;  + + + +  | id | date         | date         |  + + + +  |  | : : | : : |  |  | : : | : : |  + + + +    SELECT id DATE_FORMAT(date %Y %m %d ) As date       DATE_FORMAT(date %Y %m %d ) As date FROM test;        + + + +  | id | date     | date     |  + + + +  |  |  |  |  |  |  |  |  + + + +    在某种程度上 你可以把一种日期类型的值赋给一个不同的日期类型的对象   然而 而尤其注意的是 值有可能发生一些改变或信息的损失      如果你将一个DATE值赋给一个DATETIME或TIMESTAMP对象 结果值的时间部分被设置为 : : 因为DATE值中不包含有时间信息       如果你将一个DATETIME或TIMESTAMP值赋给一个DATE对象 结果值的时间部分被删除 因为DATE类型不存储时间信息    尽管DATETIME DATE和TIMESTAMP值全都可以用同样的格式集来指定   但所有类型不都有同样的值范围   例如 TIMESTAMP值不能比 早 也不能比 晚   这意味着 一个日期例如 当作为一个DATETIME或DATE值时它是合法的   但它不是一个正确TIMESTAMP值!并且如果将这样的一个对象赋值给TIMESTAMP列 它将被变换为      当指定日期值时 当心某些缺陷      允许作为字符串指定值的宽松格式能被欺骗 例如 因为 : 分隔符的使用 值 : : 可能看起来像时间值 但是如果在一个日期中使用 上下文将作为年份被解释成 值 : : 将被变换到 因为 不是一个合法的月份         以 位数字指定的年值是模糊的 因为世纪是未知的 MySQL使用下列规则解释 位年值 在 范围的年值被变换到 在范围 的年值被变换到    cha138/Article/program/MySQL/201311/11205

相关参考

知识大全 解析centos中Apache、php、mysql 默认安装路径

解析centos中Apache、php、mysql默认安装路径  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 51单片机串口通讯为什么给T1附值以后芯片就默认该值为波特率,而不需要其他设置

51单片机串口通讯为什么给T1附值以后芯片就默认该值为波特率,而不需要其他设置?是跟PCON或者SCON有关吗  以下文字资料是由(本站网www.cha138.com)小

知识大全 怎样在 Mysql 中直接储存图片

小技巧:怎样在Mysql中直接储存图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果你想把

知识大全 如何修改mysql的最大连接数

  MySQL的最大连接数默认是客户端登录mysqluusernameppassword  设置新的最大连接数为mysql>setGLOBALmax_connections=;  显示当前运行的

知识大全 修改Linux下MySQL编码

修改Linux下MySQL编码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  默认登录mysql

知识大全 linux系统下mysql中文乱码解决

  改默认编码  /etc/initd/mysqlstart(stop)为启动和停止服务器  /etc/mysql/主要配置文件所在位置f  /var/lib/mysql/放置的是数据库表文件夹这里的

知识大全 右键新建wps表格,默认的后缀是.et。怎样才能将它改成默认xls

右键新建wps表格,默认的后缀是.et。怎样才能将它改成默认xls?#wps#工具→选项→常规与保存→保存→文档保存默认格式选择“MicrosoftEXCEL97/2000/2003文件*.xls”w

知识大全 请问CorelDRAW 12怎样设置线条默认大小

请问CorelDRAW12怎样设置线条默认大小  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!请问Co

知识大全 用mysqldumpslow分析mysql的slow query log

  mysql有一个功能就是可以log下来运行的比较慢的sql语句默认是没有这个log的为了开启这个功能要修改f或者在mysql启动的时候加入一些参数如果在f里面修改需增加如下几行  long_que

知识大全 学者之win2k+mysql+php4快速安装

  我的php和mysql的软件包是phpplWinzipmysqlbetawinzip  先安装mysql用winzip打开软件包进行完全安装默认安装路径为:c:\\mysql  安装完成后打开开始