datetime和timestamp的区别

如题所述

datetime和timestamp是出现在MySQL和SqlServer数据库中的。

MySQL中datetime和timestamp的区别:

(一)范围不同。

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

(二)储存不同。

1,TIMESTAMP

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

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

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

2,datetime

①8个字节储存(8 bytes storage)

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

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


注:TIMESTAMP列的显示格式与datetime列相同。


SqlServer中datetime和timestamp在中用法区别基本都差不多。

datetime :

SqlServer中用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date(即 1900 å¹´ 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 å¹´ 1 月 1 日的 datetime 值。另外一个 4 字节存储以午夜后毫秒数所代表的每天的时间。 

注:smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime。SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 å¹´ 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从1900 å¹´ 1 月 1 日到 2079 å¹´ 6 月 6 日,精确到分钟。 

timestamp:
timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-15
timestamp:占用 4 字节,内部实现是新纪元时间(1970-01-01 00:00:00)以来的秒,那么这种格式在展示给用户的时候就需要做必要的时区转换才能得到正确数据。
第2个回答  2020-03-31
想要区分两者的不同,就要了解两者各自的存储特性。
DATETIME:存储的时间范围更大,是从1001年到9999年。DATETIME存储日期和时间会把值封装到YYYYMMDDHHMMSS的整数中,所以跟时区无关。存储的值会占用8个字节的存储空间。
TIMESTAMP:它存储的时间范围小的多,是从1970年到2038年。它存储值只会占用4个字节的存储空间。需要注意的一点是,它会根据时区的不同,表现为不同的时间。举个例子来说吧,如果存储的值是0,那么在格林尼治就会表现为1970-01-01 00:00:00,但是在美国就会表示为1969-12-31 19:00:00。
还有,DATETIME的默认值是NULL,但是TIMESTAMP的默认值是NOT NULL,可以在创建表的时候,为TIMESTAMP列设置默认值CURRENT_TIMESTAMP,列就会在数据插入时自动记录当前的时间。
再多说一句,Mysql提供了两个函数来做UNIX时间戳和日期的相互转化:FROM_UNIXTIME()可以将UNIX时间戳转化为日期;UNIX_TIMESTAMP()可以将日期转化为UNIX时间戳。
纯手打,希望可以帮到你,共同进步。:)
第3个回答  2016-04-27
完全不同的两个类型
datetime为时间类型,由日期跟时间两部分组成,精度3.33毫秒
timestamp为varbinary(十六进制)类型,是时间戳值,且在数据库中必须是唯一的
在oracle中,这两个类型是可以转换的,但是在sqlserver中是不可以的
时间戳只是为了标识数据的唯一与改变的,与时间不可互换
第4个回答  2016-05-07
一、区别:
1、DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

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

二、简介
1)TIMESTAMP
1.4个字节储存(Time stamp value is stored in 4 bytes)
2.值以UTC格式保存( it stores the number of milliseconds)
3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

2)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.)
相似回答