zoukankan      html  css  js  c++  java
  • DATETIME和DATE及TIMESTAMP的区别

    DATE只保存日期,不保存时分秒

    DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以’YYYY-MM-DD HH:MM:SS’格式显示DATETIME值,支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。

    TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。

    自动更新第一个TIMESTAMP列在下列任何条件下发生:

    列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。

    列没有明确地在一个UPDATE语句中指定且一些另外的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)

    你明确地设定TIMESTAMP列为NULL.

    除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。

    自动更新TIMESTAMP时建表语句应为如下类似

    CREATE TABLE `t_jindou_xx` (
      `account` varchar(18) NOT NULL default '',
      `money` decimal(10,2) NOT NULL default '0.00',
      `update_date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      PRIMARY KEY  (`account`)
    ) ENG

    INE=InnoDB DEFAULT CHARSET=latin1;

    TIMESTAMP类型保存的值不能比1970早或比2037晚,这意味着,一个日期例如’1968-01-01’,当作为一个DATETIME或DATE值合法时,它不是一个正确TIMESTAMP值,并且 如果赋值给这样一个对象,它将被变换到0。

    考虑到在范围上的不同,你当前的事件日志使用 TIMESTAMP 是没有任何问题的,不过如果是为了记录你祖父和孙子的生日,那还是要用 DATETIME.

    另外建议,如果是一些跟现在相关的时间,可以选择 TIMESTAMP. 例如记录的添加时间之类的,其他的话还是要选择 DATETIME.
    存储方面的比较

    TIMESTAMP 需要 4 字节的存储空间,而 DATETIME 则需要 8 字节

  • 相关阅读:
    js导出table到excel,同时兼容FF和IE
    Android 程式开发:(廿一)消息传递 —— 21.3 使用Intent发送短信
    [置顶] 让金融互联网-P2P网贷融资量增长10倍的广告宣传公益活动
    Headroom.js插件用法
    HDU 5289 Assignment(单调队列)
    sh_Spring整合Hibernate
    怎样高速启动Android模拟器(Android Emulator)
    设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)
    在c++11中你最惊讶的新feature是什么?
    python的私有化
  • 原文地址:https://www.cnblogs.com/lllini/p/11955323.html
Copyright © 2011-2022 走看看