SQL中datetime和timestamp的区别

初学PHP+MySQL,在开发一个简单的报名程序时,要求在每一条新插入的记录后面添加一个日期字段,方便日后查询和排序。于是立即百度,发现可以使用 datetime或timestamp两种日期类型来实现。这对于爱纠结的我来说是不被允许的,于是立即去找它们的区别。但是搜出来的要么是长篇大论,要么没有重点,于是自己总结了下这些文章的精华部分,以求精益求精。

datetime

1、允许为空值,可以自定义值,系统不会自动修改其值。

2、不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。

3、虽然不可以设定默认值,但是可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。

结论:datetime类型适合用来记录数据的原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除非你手动更改它。

timestamp

1、允许为空值,但是不可以自定义值,所以为空值时没有任何意义。

2、默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。

3、数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。

4、以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。

结论:timestamp类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。

时间: 2024-08-17 21:22:08

SQL中datetime和timestamp的区别的相关文章

mysql中datetime和timestamp的区别

原文地址:http://database.51cto.com/art/200905/124240.htm 相同 显示 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值不能早于197

mysql中 date datetime time timestamp 的区别

MySQL中关于时间的数据类型:它们分别是 date.datetime.time.timestamp.year date :"yyyy-mm-dd"  日期     1000-01-01 到 9999-12-31   3字节 time :"hh:mm:ss" 时间     -838:59:59 到 838:59:59   3字节 datetime: "yyyy-mm-dd hh:mm:ss" 日期+时间 1000-01-01 00:00:00 到

面试问题 - SQL 中存储过程与函数的区别

SQL 中的存储过程与函数没有本质上的区别 函数 -> 只能返回一个变量. 函数可以嵌入到sql中使用, 可以在select 中调用, 而存储过程不行.  但函数也有着更多的限制,比如不能使用临时表 存储过程 -> 可以返回多个变量. 存储过程的定义如下: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量

SQL中存储过程和函数的区别

本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个.而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行.执行的本质都一样.      函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少       1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.       2.    对于存储过程来说可以返回参数,而函数只能返回值或者表对象.       3.    存储过程

SQL中INEXISTS和IN 的区别和联系

SET NOCOUNT ON , SET NOCOUNT OFF当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数).当 SET NOCOUNT 为 OFF 时,返回计数.如果存储过程中包含的一些语句并不返回许多实际的数据, 则该设置由于大量减少了网络流量,因此可显著提高性能. SQL 中 IN 和 EXISTS 用法的区别: NOT IN SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN

SQL Server中DateTime与DateTime2的区别

DateTime字段类型对应的时间格式是yyyy-MM-dd HH:mm:ss.fff,3个f,精确到1毫秒(ms),示例2014-12-0317:06:15.433. DateTime2字段类型对应的时间格式是yyyy-MM-dd HH:mm:ss.fffffff,7个f,精确到0.1微秒(μs),示例2014-12-0317:23:19.2880929. 如果用SQL的日期函数进行赋值,DateTime字段类型要用GETDATE(),DateTime2字段类型要用SYSDATETIME().

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 st

mysql中date,datetime,timestamp数据类型区别

(1)date表示日期,其范围为1000-01-01到9999-12-31 (2)datetime表示日期时间,其范围是1000-01-01 00:00:00到9999-12-31 23:59:59 (3)timestamp表示时间戳,1970-01-01 00:00:00到2038-01-19 03:14:07,timestamp具有自动初始化和自动更新功能.

SQL中on和where的区别

这篇博客参考了网上的,具体哪一篇是原稿,不知道,特此声明. 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 下面以使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录. 2.where条件是在临时表生成好后,再对临时表进行过滤的条件.这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉. 假设有两张表: 表1: