储存时间,常用的有三个选择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了,这一定有他们的道理,我想也没什么可以多说的了。
直接使用的 int 好,毕竟时间戳可以用FROM_UNIXTIME等时间函数转换成时间格式, int 比datetime计算和比较简单一点,还有是就是感觉数据量大度的话int应该比datetime更快一点。
公司数据库大牛知,建的道所有的数据表关于时间的都是intint比datetime计算简单,数据量大的话int比datetime储存速度更快一点。
时间戳,一个完整的、可验证的数据块,它表示在特定时间之前存在的一段数据,通常是一个字符序列,标识某个时刻的时间。
利用数字签名技术生成下一代数据,签名对象包括原始文件信息、签名参数、签名时间等信息。广泛应用于,知识产权保护、合同签订、财务核算、电子报价投标、股票交易等领域。
扩展资料:
有两种类型的时间戳:
1自建时间戳:这种时间戳是获取时间接收设备到时间戳服务器的时间戳,并通过时间戳服务器发出时间戳证书。该时间戳可用于企业内部责任的确定,经法院证明不具有法律效力。它不能作为一个法律基础,因为它很可能被篡改时,接收设备收到的时间。
2具有法律效力的时间戳:是由中国科学院国家时间中心和北京联合信托技术服务有限公司共同打造的中国第三方可信时间戳认证服务。国家计时中心负责计时和准时监控。
你好,是可以查看的。通过设置STATISTICS我们可以查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。介绍如下:
SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息
要看你的需求了,如果是保存日期与时间串,可以用datetime和time字段类型,如果是保存UNIX时间戳,可以用int字段类型。
---------------------
补充回到:
设置2个字段,一个为开始时间,一个为结束时间。
程序里面用当前时间去比对数据库里面开始时间和结束时间的数据,符合结果的就是正在租用期间的数据。
SQL语句:
SELECT FROM 租用表 WHERE 结束时间>当前时间 AND 开始时间<当前时间
以上就是关于时间存储在MySQL里面选择什么类型更好全部的内容,包括:时间存储在MySQL里面选择什么类型更好、mysql 把时间换成时间戳进行存储在int字段中还是直接用datetime好、linux数据库sql保存时间查看等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)