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 same thing which you have stored.)

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

总结

相同点

都可以用于表示时间
都呈字符串显示

不同点

顾名思义,date只表示’YYYY-MM-DD’形式的日期,datetime表示’YYYY-MM-DD HH:mm:ss’形式的日期加时间,timestamp与datetime显示形式一样。
date和datetime可表示的时间范围为’1000-01-01’到’9999-12-31’,timestamp由于受32位int型的限制,能表示’1970-01-01 00:00:01’到’2038-01-19 03:14:07’的UTC时间。
mysql在存储timestamp类型时会将时间转为UTC时间,然后读取的时候再恢复成当前时区。假如你存储了一个timestamp类型的值之后,修改了mysql的时区,当你再读取这个值时就会得到一个错误的时间。而这种情况在date和datetime中不会发生。
 
timestamp类型提供了自动更新的功能,你只需要将它的默认值设置为CURRENT_TIMESTAMP。
除了date是保留到天,datetime和timestamp都保留到秒,而忽略毫秒。

时间: 2024-10-09 18:28:01

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 st

详细解读MySQL中COUNT函数的用法_Mysql

MySQL的COUNT函数是最简单的功能,非常有用的计算,预计由一个SELECT语句返回的记录数. 要了解COUNT函数考虑的EMPLOYEE_TBL的的表具有以下记录: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+----

MySQL中BETWEEN子句的用法详解_Mysql

可以使用IN子句来代替相结合的"大于等于和小于等于"的条件. 要了解BETWEEN 子句考虑的EMPLOYEE_TBL表有以下记录: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+---------------

Mysql中SELECT INTO 语句用法详解

语法介绍:  把所有的列插入新表    代码如下 复制代码 SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename  只把希望的列插入新表    代码如下 复制代码 SELECT column_name1, column_name2 INTO new_table_name [IN externaldatabase] FROM old_tablename    实例1:制作 "Persons" 表的备份文

详解MySQL中WHERE子句的用法_Mysql

我们已经看到SQL SELECT命令来从MySQL表获取数据.我们可以使用一个条件子句WHERE子句中筛选出来的结果.使用WHERE子句,我们可以指定一个选择的标准来从表中选择所需的记录.语法: 下面是通用的SQL WHERE子句来获取数据从MySQL表的SELECT命令的语法: SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....    

mysql解决datetime与timestamp精确到毫秒的问题

CREATE TABLE `tab1` (`tab1_id` VARCHAR(11) DEFAULT NULL,`create` TIMESTAMP(3) NULL DEFAULT NULL,`create2` DATETIME(3) DEFAULT NULL) ENGINE=INNODB DEFAULT CHARSET=utf8 SELECT * FROM tab1;   TIMESTAMP(3)与 DATETIME(3)意思是保留3位毫秒数 TIMESTAMP(6)与 DATETIME(6)

Mysql中where与having用法区别详解

让我们先运行2个sql语句:  代码如下 复制代码 SELECT * FROM `welcome` HAVING id >1 LIMIT 0 , 30 SELECT * FROM `welcome` WHERE id >1 LIMIT 0 , 30 查看一下结果吧,怎么样?是不是查询到相同的结果. 让我们再看2个sql语句:  代码如下 复制代码 SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)>10

通过实例认识MySQL中前缀索引的用法_Mysql

今天在测试环境中加一个索引时候发现一警告 root@test 07:57:52>alter table article drop index ind_article_url; Query OK, 144384 rows affected (16.29 sec) Records: 144384 Duplicates: 0 Warnings: 0 root@test 07:58:40>alter table article add index ind_article_url(url); Query

mysql中datetime比较大小问题 (转的)

方法一:   你也可以:select * from t1 where unix_timestamp(time1) > unix_timestamp('2011-03-03 17:39:05') and unix_timestamp(time1) < unix_timestamp('2011-03-03 17:39:52');就是用unix_timestamp函数,将字符型的时间,转成unix时间戳.个人觉得这样比较更踏实点儿.   方法二:   time1 between '2011-03-0