datetime和timestamp的区别

 我来答
女作者
2016-08-06 · 专注电商行业和互联网前沿,关注网络新鲜事
女作者
采纳数:2597 获赞数:11493

向TA提问 私信TA
展开全部

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 字节。

爱可生云数据库
2021-03-15 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部
timestamp:占用 4 字节,内部实现是新纪元时间(1970-01-01 00:00:00)以来的秒,那么这种格式在展示给用户的时候就需要做必要的时区转换才能得到正确数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
椰子糖60
2020-03-31
知道答主
回答量:2
采纳率:0%
帮助的人:1211
展开全部
想要区分两者的不同,就要了解两者各自的存储特性。
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时间戳。
纯手打,希望可以帮到你,共同进步。:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4eadcc2
2016-04-27
知道答主
回答量:27
采纳率:0%
帮助的人:8.2万
展开全部
完全不同的两个类型
datetime为时间类型,由日期跟时间两部分组成,精度3.33毫秒
timestamp为varbinary(十六进制)类型,是时间戳值,且在数据库中必须是唯一的
在oracle中,这两个类型是可以转换的,但是在sqlserver中是不可以的
时间戳只是为了标识数据的唯一与改变的,与时间不可互换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dayinspring
高粉答主

2016-05-07 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:2.3万
采纳率:92%
帮助的人:3481万
展开全部
一、区别:
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.)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式