`
pangwu86
  • 浏览: 117521 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL关于Timestamp类型的一个要注意的地方

 
阅读更多

使用Nutz提供的建表功能。


测试类:

@Table("t_test")
public class ATable {

	@Id
	private int id;

	@Column("nm")
	private String name;

	@Column("ct")
	private Timestamp createTime;

	@Column("lm")
	private Timestamp lastModified;
}

 

Nutz生成的建表语句是:

CREATE TABLE t_test(
	id INT(32) AUTO_INCREMENT,
	nm VARCHAR(50),
	ct TIMESTAMP,
	lm TIMESTAMP,
	PRIMARY KEY (id)
) ENGINE=InnoDB CHARSET=utf8
 

 

查看表信息:

 

结果意外的发现ct这个字段竟然默认值被设置为CURRENT_TIMESTAMP


结果也就是每次只要有数据更新,这条信息的ct字段就会更新为最新时间。



通过调查,发现这是MySQL一个自作聪明的设定,在你建表的时候,第一次发现有字段为Timestamp类型,并且这个字段不允许为空,数据库就会将其默认值设置为CURRENT_TIMESTAMP


而一张表中只允许一个Timestamp字段为CURRENT_TIMESTAMP,这也就是为么上面的lm字段没有设置成CURRENT_TIMESTAMP的原因


所以在建表的时候,一定要注意Timestamp的设定,如果不想使用CURRENT_TIMESTAMP这个特性,就手动设置下字段的default值

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

    此外,MySQL允许在一个表中最多定义两个自动更新的`TIMESTAMP`字段,其中一个可以设置为`CURRENT_TIMESTAMP`作为默认值,另一个可以设置为`ON UPDATE CURRENT_TIMESTAMP`,这样在插入新行或更新行时,这两个字段都会...

    mysql时间类型对应的java类型1

    本文将深入探讨MySQL数据库中的时间类型以及它们在Java编程语言中相对应的数据类型,以及如何在两者之间进行转换。 MySQL数据库提供了多种时间类型来处理日期和时间数据: 1. **DATE**:这个类型仅存储日期,格式...

    spirng-boot 的时间类型(date、datetime、timestamp)的全局配置

    以下是一个简单的实体类示例: ```java import java.time.LocalDate; import java.time.LocalDateTime; public class Event { private Long id; private LocalDate date; private LocalDateTime dateTime; //...

    java中将string类型转换成timestamp类型

    最后,我们使用getTime()方法将Date类型的日期对象转换成long类型的时间戳,然后将其传递给Timestamp构造函数,以创建一个Timestamp对象。 在上面的代码中,我们还使用了setLenient()方法,该方法用于控制是否将...

    Java数据类型和MySql数据类型对应一览

    在 MySql 中,日期时间类型对应的是 DATE、TIME、DATETIME、TIMESTAMP 等类型。其中,DATE 类型用于存储日期,TIME 类型用于存储时间,DATETIME 类型用于存储日期和时间,TIMESTAMP 类型用于存储时间戳。 布尔类型 ...

    MySQL timestamp的类型与时区实例详解

    MySQL的timestamp类型时间范围between ‘1970-01-01 00:00:01’ and ‘2038-01-19 03:14:07’,超出这个范围则值记录为’0000-00-00 00:00:00’,该类型的一个重要特点就是保存的时间与时区密切相关,上述所说的时间...

    关于Hinbernate中TimeStamp类型字段处理的小例子

    - 提供的"TimeStampDemo1"很可能是包含一个关于Timestamp处理的示例代码。虽然具体代码没有给出,但通常会展示如何创建一个带Timestamp字段的实体类,以及如何在Hibernate Session中操作这个实体,包括保存、更新和...

    mysql的timestamp类型字段为'0000-00-00 00:00:00'导致mybatis映射时报错解决方法

    在MySQL中,`TIMESTAMP`字段允许最小值'1970-01-01 00:00:01'和最大值'2038-01-19 03:14:07',但'0000-00-00 00:00:00'是作为一个特殊的无效日期值存在。当你试图插入一个非有效日期或者不指定日期时,某些情况下,...

    关于MySQL 时间类型 datetime、bigint、timestamp,你用哪个?

    本篇文章将详细介绍三种常用的时间类型:`datetime`、`bigint` 和 `timestamp`,并通过一个实际的例子来探讨它们在不同场景下的表现。 #### 1. datetime 类型 `datetime` 类型可以用来存储日期和时间的组合值。其...

    Java中数据类型和MYSQL中数据类型的对比

    2. 日期和时间类型:MySQL 的日期和时间类型包括 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。DATETIME 可以存储日期和时间,而 DATE 和 TIME 分别只存储日期和时间部分。TIMESTAMP 类型特别之处在于它可以自动更新,...

    MySql性能调优(一)字段类型的选取之时间类型

    TIMESTAMP 类型与 DATETIME 类型类似,但 TIMESTAMP 类型有一个自动更新的功能,即在插入或更新数据时,TIMESTAMP 字段将自动设置为当前时间戳。例如,创建一个存储最后一次更新时间的列可以使用 TIMESTAMP 类型: ...

    Java数据类型和MySql数据类型对应表

    Java 数据类型和 MySql 数据类型对应表 在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库...

    mysql timestamp数据类型

    MySQL中的`TIMESTAMP`数据类型是一个非常有用但同时也存在特定限制的时间戳字段。它用于存储日期和时间信息,与`DATETIME`数据类型相似,但有一些显著的区别。 `TIMESTAMP`在MySQL中占据4个字节,可以表示从1970年1...

    mysql 数据类型TIMESTAMP

    在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。...

    Mysql中的Datetime和Timestamp比较

    MySQL数据库系统中,时间数据类型是用来存储日期和时间值的,其中包括`DATE`、`DATETIME`和`TIMESTAMP`。这些类型在某些方面相似,但在其他方面却有着明显的区别。下面将详细介绍`DATETIME`和`TIMESTAMP`的比较,并...

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...

    mysql之TIMESTAMP(时间戳)用法详解

    MySQL中的TIMESTAMP字段类型是用来存储时间戳值的,它可以记录自1970年1月1日00:00:00 UTC(协调世界时)以来的秒数。TIMESTAMP在不同的情境下有不同的用法,这主要体现在它的默认值和更新策略上。 1. **TIMESTAMP ...

    MySQL所有数据类型.pdf

    MySQL 数据类型详解 MySQL 数据类型是指在 MySQL 数据库中存储数据的方式,它决定了数据的存储格式、大小和范围。了解 MySQL 数据类型非常重要,因为它直接影响数据库的性能、可维护性和安全性。本篇文章将详细介绍...

    在MySql中获取当前系统当前时间的函数和TIMESTAMP列类型使用说明

    在这个例子中,当我们插入一行数据并将`date1` 和 `data2` 列的值设置为`NULL`时,MySQL将自动用当前的日期和时间填充这些列。 通过以上介绍可以看出,在MySQL中,获取当前系统的日期和时间以及使用`TIMESTAMP` 列...

    oracle中TIMESTAMP与DATE比较

    `TIMESTAMP`类型的另一个优点是,它支持毫秒、微秒甚至纳秒级别的精度,具体取决于数据库的设置。这意味着在比较两个时间戳时,即使它们看起来完全相同,Oracle仍然能够区分出哪一个是先发生的,这是`DATE`类型所...

Global site tag (gtag.js) - Google Analytics