datetime和timestamp的区别

发布网友 发布时间:2022-04-21 03:49

我来回答

7个回答

懂视网 时间:2022-04-29 22:26

  datetime 1、允许为空值,可以自定义值,系统不会自动修改其值。 2、不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。 3、虽然不可以设定默认值,但是可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。 结论:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。   timestamp 1、允许为空值,但是不可以自定义值,所以为空值时没有任何意义。 2、默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。 3、数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。 4、以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。 结论:timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。

SQL中datetime和timestamp的区别

标签:

热心网友 时间:2022-04-29 19:34

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

热心网友 时间:2022-04-29 20:52

timestamp:占用 4 字节,内部实现是新纪元时间(1970-01-01 00:00:00)以来的秒,那么这种格式在展示给用户的时候就需要做必要的时区转换才能得到正确数据。

热心网友 时间:2022-04-29 22:27

想要区分两者的不同,就要了解两者各自的存储特性。
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时间戳。
纯手打,希望可以帮到你,共同进步。:)

热心网友 时间:2022-04-30 00:18

完全不同的两个类型
datetime为时间类型,由日期跟时间两部分组成,精度3.33毫秒
timestamp为varbinary(十六进制)类型,是时间戳值,且在数据库中必须是唯一的
在oracle中,这两个类型是可以转换的,但是在sqlserver中是不可以的
时间戳只是为了标识数据的唯一与改变的,与时间不可互换

热心网友 时间:2022-04-30 02:26

一、区别:
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.)

热心网友 时间:2022-04-30 04:51

DATETIME
日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。
TIMESTAMP[(M)]
时间戳。范围是'1970-01-01 00:00:00'到2037年。
TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。

TIMESTAMP值返回后显示为'YYYY-MM-DD HH:MM:SS'格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。

注释:MySQL 4.1以前使用的TIMESTAMP格式在MySQL 5.1中不支持;关于旧格式的信息参见MySQL 4.1 参考手册。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com