TIMESTAMP列类型详解(怎样设列的默认值为Now())

来源:互联网 发布:软件如何注册 编辑:程序博客网 时间:2024/04/30 03:39
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
TIMESTAMP列类型详解怎样设列默认值为Now())
目前不支持列的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位的年月日数据。
          如果你使用ALTERTABLE拓宽一个狭窄的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亦然)       1<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>