MySQL中的datetime与timestamp比较

文将通过实例比较MySQL中的datetime与timestamp,虽然这两种方法其实表示同一种类型,但还是有一定的区别。

相同

显示

TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。

不同

范围

datetime 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAMP值不能早于1970或晚于2037

储存

TIMESTAMP

1.4个字节储存(Time stamp value is stored in 4 bytes)

2.值以UTC格式保存( it stores the number of milliseconds)

3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

datetime

1.8个字节储存(8 bytes storage)

2.实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)

3.与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

实例对比

现在我来做个时区对他们的影响。

1.先插入一个数据insert into `t8` values(now(), now());

2.改变客户端时区(东9区,日本时区)。

3.再次显示插入的数据,变化了,timestamp类型的数据 增加了 1个小时

接下来 讨论一些timestamp 的其他的属性

1.null 是否为空

timestamp 默认允许为 “非空”(not null by default), 如果你在定义“ts TIMESTAMP DEFAULT NULL” 是非法的。 可以指定为空 null ,“ts TIMESTAMP NULL" ,这时可以在添加语句改变默认值。


ts2 TIMESTAMP NULL DEFAULT 0,
ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP

default (一个表中只能有一个列选择下面其中一种)


default CURRENT_TIMESTAMP

default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

ON UPDATE CURRENT_TIMESTAMP 

ON UPDATE 见上2

时间: 2024-09-14 14:14:13

MySQL中的datetime与timestamp比较的相关文章

Mysql中的Datetime和Timestamp比较_Mysql

mysql中用于表示时间的三种类型date, datetime, timestamp (如果算上int的话,四种) 比较容易混淆,下面就比较一下这三种类型的异同 相同点 都可以用于表示时间 都呈字符串显示 不同点 1.顾名思义,date只表示'YYYY-MM-DD'形式的日期,datetime表示'YYYY-MM-DD HH:mm:ss'形式的日期加时间,timestamp与datetime显示形式一样. 2.date和datetime可表示的时间范围为'1000-01-01'到'9999-12

数据库-java中Date类型如何与mysql中的datetime类型联系

问题描述 java中Date类型如何与mysql中的datetime类型联系 我在Mysql中建了一个datetime类型的数据 然后想在java中用Date类型来获取当前时间(变量名为inTime)并添加到数据库中 构造了一个函数,在传参数的时候应该怎么传, 还是到底是Import java.util.Date还是import java.sql.Date 并且我希望的时间格式为:2016-01-04 21:09:23 构造函数这样写对吗 public CheckIn( java.sql.Dat

MySQL日期函数datetime与timestamp的3大区别

相同: 显示格式一致:YYYY-MM-DD HH:MM:SS; 不同: 范围: datetime支持的范围为'1000-01-01 00:00:00′到'9999-12-31 23:59:59′ TIMESTAMP值不能早于1970或晚于2037 储存: TIMESTAMP 1.4个字节储存(Time stamp value is stored in 4 bytes) 2.值以UTC格式保存( it stores the number of milliseconds) 3.时区转化 ,存储时对当

计算MySQL中的datetime字段与当前时间差一例

mysql http://www.phpchina.com/browser.asp?cmd=view&catid=31&objid=49&order=date

MySQL 中你应该使用什么数据类型表示时间?

当你需要保存日期时间数据时,一个问题来了:你应该使用 MySQL 中的什么类型?使用 MySQL 原生的 DATE 类型还是使用 INT 字段把日期和时间保存为一个纯数字呢? 在这篇文章中,我将解释 MySQL 原生的方案,并给出一个最常用数据类型的对比表.我们也将对一些典型的查询做基准测试,然后得出在给定场景下应该使用什么数据类型的结论. 如果你想直接看结论,请翻到文章最下方. 原生的 MySQL Datetime 数据类型 Datetime 数据表示一个时间点.这可以用作日志记录.物联网时间

MySQL中datetime与timestamp用法比较

区别对比 储存 TIMESTAMP 1.4个字节储存(Time stamp value is stored in 4 bytes) 2.值以UTC格式保存( it stores the number of milliseconds) 3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区. datetime 1.8个字节储存(8 bytes storage) 2.实际格式储存(Just stores what you have stored and retrieves the sa

mysql中TIMESTAMP设置默认时间为当前时间

很多时候,为了简单,我们在设计数据表的时候,都需要设置时间字段为当前时间.可是MySQL 中,默认值无法使用函数,也就是你无法设置某一列,默认值是 NOW () 这样的处理.那怎么办呢? TIMESTAMP 数据类型.插入的时候,忽略该列即可.  代码如下 复制代码 dt TIMESTAMP /*等价于*/ dt TIMESTAMP  default CURRENT_TIMESTAMP  ON UPDATE CURRENT_TIMESTAMP   create table testB (   i

MySQL中timestamp字段的一些规则

有同学说timestamp字段的规则比较"诡异".手册里面说的比较复杂,这里简单说明一下MySQL中 timestamp字段的一些规则.   分为两部分   定义规则:   1.  timestamp字段有三个属性: a)           是否允许NULL.默认为not null. b)           默认值.可以设定为default CURRENT_TIMESTAMP 或default 某个常量.若定义时缺省,对于第一个出现的timestamp字段,默认为CURRENT_T

MySQL中各种字段的取值范围

mysql MySQL中各种字段的取值范围过节回来,网站更新的第一篇文章.看来我有必要在最近找到一位志同道合的同学一起来维护站点才行了----------------------------------------------------------------TINYINT -128 - 127 TINYINT UNSIGNED 0 - 255 SMALLINT -32768 - 32767 SMALLINT UNSIGNED 0 - 65535 MEDIUMINT -8388608 - 83