时间存储在MySQL里面选择啥类型更好
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间存储在MySQL里面选择啥类型更好相关的知识,希望对你有一定的参考价值。
参考技术A 储存时间,常用的有三个选择datetime、timestamp、int。昨夜同事问到了,于是今天就总结一下自己的理解。插入效率:datetime > timestamp > int读取效率:int > timestamp > datetime储存空间:datetime > timestamp = int具体上面的实验数据可以看这篇文章。建立索引的体积,和索引的速度,你懂的。
让我们来看一个应用场景:
看下这张图,第一我们需要设置系统的默认时区,第二我们也需要提供不同时区时间显示的需要。于是,我们分别使用datetime、timestamp、int字段类型来看下:使用datetime直接显示时间,这是个不错的选择,但是如果考虑到时区,很明显计算上的麻烦。使用timestampOK,这个很好,可以根据系统的时区来自动输出时间,但是单个用户要定制自己的时区呢?再者你不怕麻烦,在程序里面实现了这个计算,服务器若是换个地方,改了下时区,你程序里面计算单个用户当地时间的代码怎么办(timestamp出来的时间会根据时区的变化而变化,在某些情况下是不错的选择,但在某些情况下,真的很鸡肋)。使用int从上面两个类型的缺点看来,貌似这个类型可以解决以上的问题,其实我们只要存格林时间的unix timestamp就好了,时区时间的计算上也很方便,读取的效率也不错。我觉得用这个储存的缺点呢,就是直接select的时候时间不能直观的显示出来。看看其他开源程序是怎么做的discuz, typecho, emlog等等等等,他们都选用int了,这一定有他们的道理,我想也没什么可以多说的了。本回答被提问者采纳
oracle中的number类型对应mysql里面啥类型啊
Number在Oracle中是数值型的统称,可以表示Oracle中的所有数值。而MySQL没有数值的统称,只有分别的数据类型,例如 INT、FLOAT、DOUBLE等。
MySQL的数值类型有如下几种 :
扩展资料
ORACLE的数据类型
CHAR 固定长度字符串,最大长度2000 bytes;
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749;
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes;
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes;
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS);
LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB;
RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等;
LONG RAW 可变长度的二进制数据 最大长度2G 可存放多媒体图象声音等;
BLOB 二进制数据 最大长度4G;
CLOB 字符数据 最大长度4G;
CLOB 根据字符集而定的字符数据 最大长度4G ;
BFILE 存放在数据库外的二进制数据 最大长度4G ;
ROWID 数据表中记录的唯一行号 10 bytes ********.****.****格式,*为0或1;
NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes;
NUMBER(P,S) 数字类型 P为总位数,S为小数位数;
DECIMAL(P,S) 数字类型 P为总位数,S为小数位数;
INTEGER 整数类型 小的整数;
FLOAT 浮点数类型 NUMBER(38),双精度;
REAL 实数类型 NUMBER(63),精度更高。
MySQL的数据类型
整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT;
浮点数类型:FLOAT、DOUBLE、DECIMAL;
字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB;
日期类型:Date、DateTime、TimeStamp、Time、Year;
其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection。
参考资料来源:MySQL官方文档
参考资料来源:Oracle官方文档
参考技术A1、第一步,双击打开SQLyog客户端软件,新建数据库表t_date_time,直接在客户端进行创建。
2、在Python 3里,只有一种整数类型 ,不分整型和长整型。使用Python的内置函数type可以查看变量所指的数据类型。
3、整型计算。
4、 浮点类型,Python中的浮点类型类似Java语言中的double 类型,是双精度浮点型,可以直接用十进制或科学计数法表示。
5、布尔类型是表示逻辑状态的类型,用 True 和 False 来表示真假,任何非 0 数字都为 True。所以,在一定意义上可以把 布尔类型看成整型。
参考技术B oracle中的number类型是广泛的数字类型,由number(M,N)来确定精度,n=0为整数,M确定的是数据大小的范围,所以说不能与mysql中的进行唯一对应。 参考技术C Oracle的number 可以用sql标准的 numeric/decimal来 对应。
mysql应该支持numeric/decimal类型。 参考技术D decimal ,如果想表示的全面点,就可以用decimal类型,但是mysql中的数据类型比较宽松,你定义成varchar类型也可以和数字进行匹配,但是最好自己定义的严谨点儿。
以上是关于时间存储在MySQL里面选择啥类型更好的主要内容,如果未能解决你的问题,请参考以下文章