mysql那些事(2)时间类型数据如何存储

几乎每次数据库建模的时候,都会遇到时间类型数据存储的问题。

mysql存储时间通常选择这四种类型:datetime、timestamp、int和bigint四种方式,到底使用什么类型,需要看具体的业务。

我们分别对这四种类型进行讨论。

1、datetime

这个类型可以存储8字节,表示从1000到9999年之间的数据。这个类型可以为空值,也可以自定义值,默认的初始值是“0000-00-00 00:00:00”。

这种类型存储的存储的优点是数据可读性强,不需要函数做转换。

2、timestamp

这个类型的存储长度是4个字节,表示的范围是:‘1970-01-01 00:00:01‘-‘2038-01-19 03:14:07’,可以为空值,也可以自定义值。需要注意的是这个字段创建时如果加上 “on update current_timestamp”时,该字段插入值时,会自动变为当前的系统时间。

3、int

这个类型的存储长度是4字节,一般用来存储linux时间戳的形式,存储精度为秒。表示最大是 date(‘Y-m-d H:i:s‘, 4294967295) 最大到 2106-02-07 14:28:15,可以为空值,但是业务逻辑设计时尽量使用非空值。它的优点是数值型存储,节省空间。但是可读性差。另外,如果业务上经常需要按照时间进行排列或者查询的话,尽量使用int类型。

4、bigint

这个类型的存储长度是8个字节,从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。适合业务精确的时间存储,它的存储精度为毫秒。优缺点请参考int。

另外,mysql中的时间存储还有以下类型:

YEAR :字节数为1,取值范围为“1901——2155”。

DATE,字节数为4,取值范围为“1000-01-01——9999-12-31”。

TIME,字节数为3,取值范围为“-838:59:59——838:59:59”。

在实际的数据库建模过程中,用的比较少一些。

综上,我们认为时间的存储需要根据具体的业务场景来定。一般来说,int类型使用较多,一方面查询效率高,另一方面可以显示时间的方式比较灵活,一般语言都提供转化的函数,如大家熟知的php中的date()函数。

原文地址:https://www.cnblogs.com/phpfensi/p/8143307.html

时间: 2024-11-08 11:16:18

mysql那些事(2)时间类型数据如何存储的相关文章

MySQL日期数据类型、时间类型使用总结

1.MySQL的五种日期和时间类型 MySQl中有多种表示日期和时间的数据类型.其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践.它们的对比如下: TEAR ,字节数为1,取值范围为“1901——2155” DATE,字节数为4,取值范围为“1000-01-01——9999-12-31” TIME,字节数为3,取值范围为“-838:59:59——838:59:59” DATETIME,字节数为8,取值范围为“1000-01-01 00:

MySQL日期数据类型和时间类型使用总结

转自: http://blog.chinaunix.net/space.php?uid=11327712&do=blog&id=32416 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --------- --------------------- ----------------------------------------- datetime 8 bytes YYYY-MM-DD HH:MM:SS 1

复制一张表的数据到另一张表,jq.grid里面有时间类型数据时展示不了数据

1.复制一张表的数据到另一张表 insert into jct_sys_lock_tbl_new  (BGN_DT, END_DT, TYPE, DESCR, flag, format, range, count)  select BGN_DT, END_DT, TYPE, DESCR, flag, format, range, count    from jct_sys_lock_tbl 也可以: insert into jct_sys_lock_tbl_new  select *    fr

MySQL学习分享-->日期时间类型

日期时间类型 ①如果要用来表示年月日时分秒,一般使用datetime类型: ②如果要用来表示年月日,一般使用date类型: ③如果要表示时分秒,一般使用time类型: ④如果只是表示年份,一般使用year类型,需要注意的是5.5.27版本之前(不包含该版本)year类型有2位和4位格式这两种表示,在5.5.27版本之后2位格式的year已经不再被支持,year类型的值都会以YYYY的格式显示. year(2)被弃用我个人的理解是因为两位的显示宽度使得该类型表示模糊.不明确(显示的值仅仅是最后两位

MySQL数据类型--------日期与时间类型实战

1. 背景 * MySQL支持多种表示日期和时间的数据类型,如YEAR.TIME.DATETIME.TIMESTAMP等等-- * MySQL 5.6.4版本开始支持微秒(支持类型:TIMTE.DATETIME.TIMESTAMP, 微秒长度最大为6) 2. 日期与时间类型所属空间与表示范围 类型 5.6.4版本之前 占用字节 5.6.4版本之后 (包含5.6.3版本) 占用字节 表示范围 DATETIME 8 6+(微秒长度-1 )/2 1000-01-01 00:00:00 ~ 9999-1

MySQL的5种时间类型的比较

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 bytes YYYY-MM-DD HH:MM:SS 19700101080001 2038 年的某个时刻 00000000000000 DATE 4 bytes YYYY-MM-DD 1000-01-01 9999-12-

MySQL中日期和时间类型

1 日期类型 MySql中关于日期的类型有Date/Datetime/Timestamp三种类型. 日期赋值时,允许"不严格"语法:任何标点符都可以用做日期部分或时间部分之间的间割符.例如,'98-12-31 11:30:45'.'98.12.31 11+30+45'.'98/12/31 11*30*45'和'[email protected]@31 11^30^45'是等价的,对于不合法的将会转换为:0000-00-00 00:00:00 1.1 Date格式 此类型的字段,存储数据

MySql与Java的时间类型

MySql的时间类型有          Java中与之对应的时间类型date                                           java.sql.DateDatetime                                    java.sql.TimestampTimestamp                                  java.sql.TimestampTime                            

使用Python向MySQL数据库中存入json类型数据

0.说明 因为出于个人项目的需要,获取到的数据都是json类型的,并且都要存入MySQL数据库中,因为json类型数据不像一般的文本数据,所以在存入MySQL时需要注意的问题很多. 在网上找了很多方法,整理了一下比较实用可靠的,总结下来就是下面的过程: MySQL表中需要保证存储json数据的列类型为BLOB: 使用sql语句时,使用MySQLdb.excape_string函数来对json数据进行转义: 查询数据时,将结果使用json.loads就能够得到原来的Python数据类型: 下面就来