今天是:
首 页信息查询网站SEO查询工具CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
软件新闻
操作系统
Vista Winxp Win2003 Linux Windows综合
工具软件
系统工具 媒体工具 网络工具 杀毒软件 聊天
软件开发
C教程 C++ Java C# ASP.NET JSP PHP
数据库
Oracle MySQL DB2 SQL Server Sybase
安全
网络 病毒
办公应用
Word Excel Powerpoint Outlook 其他
平面设计
Photoshop Fireworks Coreldraw Flash Illustrator 3dsmax
网站运营
网站运营 网站优化 网站策划 策划书下载 建站心得 站长故事 网站盈利 网页制作 网页特效 建站素材 免费资源 QQ频道
  当前位置:首 页 >> 数据库栏 >> MySQL >> Mysql教程:介绍TIMESTAMP时间戳的使用

Mysql教程:介绍TIMESTAMP时间戳的使用

  发布于2008-08-25 16:12 来源:中国教程网

Mysql教程:介绍TIMESTAMP时间戳的使用

  MySQL目前不支持列的Default 为函数的形式,
  如达到你某列的默认值为当前更新日期与时间的功能,
  你可以使用TIMESTAMP列类型

  下面就详细说明TIMESTAMP列类型
  
  TIMESTAMP列类型
  TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。
  TIMESTAMP值显示尺寸的格式如下表所示:
  :
  +---------------+----------------+
  | 列类型    | 显示格式    |
  | TIMESTAMP(14) | YYYYMMDDHHMMSS | 
  | TIMESTAMP(12) | YYMMDDHHMMSS  |
  | TIMESTAMP(10) | YYMMDDHHMM   |
  | TIMESTAMP(8) | YYYYMMDD    |
  | TIMESTAMP(6) | YYMMDD     |
  | TIMESTAMP(4) | YYMM      |
  | TIMESTAMP(2) | YY       |
  +---------------+----------------+
  “完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸创造
  最常见的显示尺寸是6、8、12、和14。
  你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。
  列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。
  
  列如:
  定义字段长度   强制字段长度
  TIMESTAMP(0) -> TIMESTAMP(14)
  TIMESTAMP(15)-> TIMESTAMP(14)
  TIMESTAMP(1) -> TIMESTAMP(2)
  TIMESTAMP(5) -> TIMESTAMP(6)
  
  所有的TIMESTAMP列都有同样的存储大小,
  使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。
  不合法的日期,将会被强制为0存储
  
  这有几个含意:

  1、虽然你建表时定义了列TIMESTAMP(8),但在你进行数据插入与更新时TIMESTAMP列实际上保存了14位的数据(包括年月日时分秒),只不过在你进行查询时MySQL返回给你的是8位的年月日数据。如果你使用ALTER TABLE拓宽一个狭窄的TIMESTAMP列,以前被“隐蔽”的信息将被显示。
  2、同样,缩小一个TIMESTAMP列不会导致信息失去,除了感觉上值在显示时,较少的信息被显示出。
  3、尽管TIMESTAMP值被存储为完整精度,直接操作存储值的唯一函数是UNIX_TIMESTAMP();由于MySQL返回TIMESTAMP列的列值是进过格式化后的检索的值,这意味着你可能不能使用某些函数来操作TIMESTAMP列(例如HOUR()或SECOND()),除非 TIMESTAMP值的相关部分被包含在格式化的值中。例如,一个TIMESTAMP列只有被定义为TIMESTAMP(10)以上时, TIMESTAMP列的HH部分才会被显示,因此在更短的TIMESTAMP值上使用HOUR()会产生一个不可预知的结果。
  4、不合法TIMESTAMP值被变换到适当类型的“零”值(00000000000000)。(DATETIME,DATE亦然)    
  
  你可以使用下列语句来验证:
  CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (8) PRIMARY KEY('id'));
  INSERT INTO test SET id = 1;
  SELECT * FROM test;
  +----+----------------+
  | id | date1     |
  +----+----------------+
  | 1 | 20021114    |
  +----+----------------+
  ALTER TABLE test CHANGE 'date1' 'date1' TIMESTAMP(14);
  SELECT * FROM test;
  +----+----------------+
  | id | date1     |
  +----+----------------+
  | 1 | 20021114093723 |
  +----+----------------+
  
  你可以使用TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。
  如果你有多个TIMESTAMP列,只有第一个自动更新。

  自动更新第一个TIMESTAMP列在下列任何条件下发生:
  
  1、列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
  2、列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
  3、你明确地设定TIMESTAMP列为NULL.
  4、除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
  
  CREATE TABLE test (
     'id' INT (3) UNSIGNED AUTO_INCREMENT,
     'date1' TIMESTAMP (14),
     'date2' TIMESTAMP (14),
     PRIMARY KEY('id')
     );
  
  INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL);
  INSERT INTO test SET id= 2;
  +----+----------------+----------------+
  | id | date1     | date2     |
  +----+----------------+----------------+
  | 1 | 20021114093723 | 20021114093723 |
  | 2 | 20021114093724 | 00000000000000 |
  +----+----------------+----------------+




中查找“Mysql教程:介绍TIMESTAMP时间戳的使用”更多相关内容

中查找“Mysql教程:介绍TIMESTAMP时间戳的使用”更多相关内容



上一篇:Mysql教程:将txt文本中的数据轻松导入MySQL表中的方法
下一篇:如何使用Erwin进行基于MySQL的数据库设计
最近更新 赞助商
·MySQL索引分析和优化10-28
·Mysql字段类型说明10-28
·解决MySql5 Memory表最大16M限制的问题10-28
·Vista下无法安装运行Mysql10-20
·PHP和MYSQL数据库合理且有效的结合在一起10-13
·技巧实例:如何在.NET中访问MySQL数据库10-13
·MySQL数据库管理必备工具 phpMyAdmin 3.009-09
·初学者必读 MySQL 数据库常见问题汇总09-09
·MySQL数据库中修改密码及访问限制设置详解09-01
·如何使用Erwin进行基于MySQL的数据库设计09-01
·Mysql教程:介绍TIMESTAMP时间戳的使用08-25

共有评论 0 条 网友评分 0分 查看所有评论


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[新ICP备05003216号]. All Rights Reserved .