时间戳timestamp类型

时间戳timestamp类型时间戳 timestamp 类型 Timestamp Mysql 中 timestamp 的格式为 YYYY MM DD HH MM SS 显示宽度是 19 个字符 如果你在 insert 的时候指定 null 那么它会自动显示为当前操作的时间 但是如果你在 insert 操作的时候没有插入数据 那么默认为 0000 00 0000 00 00 TIMESTAMP 类型使用 4 个字节 范围是 1970 01

时间戳timestamp类型

Timestamp

​ Mysql中timestamp的格式为”YYYY-MM-DD:HH-MM-SS”,显示宽度是19个字符,如果你在insert的时候指定(null),那么它会自动显示为当前操作的时间。但是如果你在insert操作的时候没有插入数据,那么默认为0000-00-00 00-00-00,TIMESTAMP 类型使用 4 个字节,范围是 ‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.’ 。

 mysql> insert into test values(null); Query OK, 1 row affected mysql> select * from test; +---------------------+ | time | +---------------------+ | 2018-12-27 12:31:36 | +---------------------+ 1 row in set 

​ 当你每次insert和update操作的时候,会自动记录当前操作的时间。如果你不想要时间这个格式,可以将其转换为数字具体操作为select的时候在列的名字后面添加+0

mysql> update test set name='王五' where id=1; Query OK, 1 row affected Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from test; +---------------------+----+------+------+ | time | id | name | eee | +---------------------+----+------+------+ | 2018-12-27 12:50:37 | 1 | 王五 | NULL | | 2018-12-27 12:32:04 | 2 | | NULL | | 2018-12-27 12:44:59 | 3 | 张三 | NULL | | 2018-12-27 12:44:59 | 4 | 李四 | NULL | +---------------------+----+------+------+ //数字转换 mysql> select time+0 from test; +----------------+ | time+0 | +----------------+ | 136 | | 204 | +----------------+ 2 rows in set 
如果定义时 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 子句都有,列值为默认使用当前的时间戳,并且自动更新
CREATE TABLE tb1( id INTEGER, t1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); mysql> DESC tb1; +-------+-----------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+-------------------+-----------------------------+ | id | int(11) | YES | | NULL | | | t1 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +-------+-----------+------+-----+-------------------+-----------------------------+ 2 rows in set (0.00 sec) mysql> INSERT INTO tb1(id) values(1); Query OK, 1 row affected (0.10 sec) mysql> select * from tb1; +------+---------------------+ | id | t1 | +------+---------------------+ | 1 | 2017-08-30 12:07:00 | +------+---------------------+ 1 row in set (0.00 sec) mysql> UPDATE tb1 SET id=2 WHERE id=1; Query OK, 1 row affected (0.20 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from tb1; +------+---------------------+ | id | t1 | +------+---------------------+ | 2 | 2017-08-30 12:07:55 | +------+---------------------+ 1 row in set (0.00 sec) 

如果不使用 DEFAULT 或 ON UPDATE 子句,那么它等同于 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

CREATE TABLE tb2( id INTEGER, t1 TIMESTAMP ); mysql> DESC tb2; +-------+-----------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+-------------------+-----------------------------+ | id | int(11) | YES | | NULL | | | t1 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +-------+-----------+------+-----+-------------------+-----------------------------+ 2 rows in set (0.00 sec) 

如果只有 DEFAULT CURRENT_TIMESTAMP 子句,而没有 ON UPDATE 子句,列值默认为当前时间戳但不自动更新

 CREATE TABLE tb3( id INTEGER, t1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); mysql> DESC tb3; +-------+-----------+------+-----+-------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+-------------------+-------+ | id | int(11) | YES | | NULL | | | t1 | timestamp | NO | | CURRENT_TIMESTAMP | | +-------+-----------+------+-----+-------------------+-------+ 

注意:当你在需要在表中添加类型为timestamp列的时候,如果你没有指定default current_timestamp on update current_timstamp的时候,这时这个列的默认值是0000-00-00 00-00-00;

mysql> alter table test add t timestamp; Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0 mysql> desc test; +-------+------------+------+-----+---------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------------------+-----------------------------+ | t | timestamp | NO | | 0000-00-00 00:00:00 | | +-------+------------+------+-----+---------------------+-----------------------------+ 

总结:

  1. 占用4个字节
  2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
  3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如’1968-01-01’,虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。
  4. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
  5. 数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。
  6. 默认情况下以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
  7. 如果需要可以设置timestamp不自动更新。通过设置DEFAULT CURRENT_TIMESTAMP 可以实现。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219647.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:12
下一篇 2026年3月17日 下午10:13


相关推荐

  • Python定义计算矩阵转置的函数

    Python定义计算矩阵转置的函数定义计算矩阵转置的函数1)使用循环进行转置matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]#打印矩阵defprintMatrix(m):foreleinm:foreinele:print(‘%3d’%e,end=”)print(”)…

    2022年5月24日
    47
  • 【Flume】batchSize和transactionCapacity区别

    batchSize是针对Source和Sink提出的一个概念,它用来限制source和sink对event批量处理的。即一次性你可以处理batchSize个event,这个一次性就是指在一个事务中。当你处理的event数量超出了batchSize,那么事务就会提交了。注意,这里有一个隐晦的地方,就是batchSize一定不能大于transactionCapacitytransactionC…

    2022年4月15日
    85
  • pycharm设置c语言注释颜色,pycharm设置注释颜色的方法[通俗易懂]

    pycharm设置c语言注释颜色,pycharm设置注释颜色的方法[通俗易懂]pycharm设置注释颜色的方法操作方法如下所示:File–>Settings–>Editor–>Color&Fonts–>LanguageDefaults–>Linecomment–>设置颜色即可以上这篇pycharm设置注释颜色的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。时间:2018-05-22…

    2022年8月25日
    9
  • 模式-“里氏替换原则”

    模式-“里氏替换原则”

    2022年1月2日
    44
  • web后端开发php,web后端开发主要做什么?

    web后端开发php,web后端开发主要做什么?应用程序或web服务可以分为两大部分:前端和后端。从这些名字可以猜出他们的角色。前端是你可以“看到”的部分。它是让你与应用程序或服务交互的部分。颜色、动画、布局以及所有其他增加你使用应用或网站体验的酷东西就是前端。前端通常称为用户界面(UI)。后端是你看不到的部分。它是应用程序或网站的内部工作。这包括服务器、数据库等。比如你正在本网站上读一篇文章。字体、颜色、图案等构成这一页的正面。但是,本文的网…

    2022年6月17日
    37
  • 剑指Offer面试题:13.合并两个排序的链表

    一题目:合并两个排序的链表二代码实现将链表换成数组做简单的循环和递归测试(1)循环实现(2)递归实现

    2021年12月19日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号