时间存储在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官方文档

参考技术A

1、第一步,双击打开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里面选择啥类型更好的主要内容,如果未能解决你的问题,请参考以下文章

存储 MD5 CHAR(32) 时选择啥 MySQL 排序规则?

mysql 里面用啥数据类型来定义手机号码?

关于MYSQL 时间类型存储在数据库里是啥类型

mysql数据库,索引是怎么使用的

《高性能MySQL》- 04 Schema与数据类型优化

MySQL之Schema与数据类型优化