datetime、timestamp、varchar2之争
datetime、timestamp、varchar2之争
时间的字段类型使用datetime、timestamp、varchar2中的哪个?一直都存在争议,似乎每一个都有优缺点。我认为一个企业及的应用,使用datetime类型是最为合适的选择,日期类型使用date格式!
因为:
一般日期或时间字段都需要用于检索、排序,或者需要进行计算,例如计算时间是否过期,是否生效,多久后过期等等,使用date、datetime可以直接映射成想要的java对象,无需将字符串转换成对象,同时不存在2038年问题,对应企业及的应用规范使用datetime将可以减少不必要的麻烦!
以下是我认为的优缺点,有不同意见的欢迎留言讨论:
datetime
优点:
- 占用空间较小;
- 计算方便;
- 索引效率高;
缺点:
- 国际站的时区需要单独处理;
- 显示格式需要转换为对应的字符串格式;
timestamp
优点:
- 占用空间最小;
- 计算最方便,可以直接使用时间戳进行计算;
- 索引效率高;
- 对国际站的时区问题友好;
缺点:
- 日期有效范围过小,存在2038年问题,作为一个要求数据保留10年以上的管理系统,使用timestamp将存在很大问题;
- 显示格式需要转换为对应的字符串格式;
varchar2
优点:
- 存储即展示的格式,避免格式化
- 用于存储年,年月这种格式
缺点:
- 存储空间最大,yy-MM-dd HH:mm:ss格式需要19位,如果需要毫秒更长;
- 如果需要转换成其他的显示格式,得转换两次;
- 如果需要计算的场景,需要先将字符串转换为日期类型再操作,例如上个月的日期;
- 影响检索效率,例如使用大于小于比较似乎会影响性能,而且不同数据库的处理机制似乎会存在差异,重点是直接比较似乎不太合理;
- 使用between and 不同的数据库语法可能存在差异,需要使用函数将字符串转换为日期格式;
- 数据不会校验合法性,例如闰年2月;
datetime、timestamp、varchar2之争相关推荐
- mysql datetime timestamp 索引_MYSQL中时间类型底层存储,DATETIME ,TIMESTAMP,INT 如何选择?...
在优化索引时,思考了一个问题,DATE, DATETIME, TIMESTAMP,还有INT存储的时间,在索引中哪个效率更高一些? 索引存储的,如果单纯的测试,而不去了解底层存储的方式和类型就不能断言 ...
- mysql 时间类型 datetime,timestamp
2019独角兽企业重金招聘Python工程师标准>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间,使用mysql 的当前时间. ...
- mysql datetime转换为date_MySQL date,datetime,timestamp区别及相互转换
date 是精确到日,datetime精确到秒.timestamp 时间戳 date: 日期 如:2019-10-26 不带时分秒 datetime: 日期时间 如:2019-10-26 10:53 ...
- datetime timestamp的区别
我们看看这几个数据库中(mysql.oracle和sqlserver)如何表示时间 mysql数据库:它们分别是 date.datetime.time.timestamp和year.date :&qu ...
- mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型
DATETIME类型用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:0 ...
- mysql中时间类型datetime,timestamp与int的区别
在mysql中存储时间,我们可以用datetime 格式,timestamp格式,也可以用int格式.那么我们设计的时候该如何考虑呢? 首先,我觉得应该明白这几个格式究竟是如何的,然后看看他们的区别, ...
- Java与数据库中的datetime Timestamp以及String之间的转换
这是今天做数据库的时候碰到的问题,先大概说一下问题,首先大家知道数据库中对于时间的存储类型有好几种,比如timestamp,datetime,date, 那么我们的程序不可避免会出现对于时间的写入和读 ...
- python timestamp和datetime之间的转换_python – 在datetime,Timestamp和datetime64之间转换
要将numpy.datetime64转换为datetime对象,它表示UTC中的时间在numpy-1.8上: >>> from datetime import datetime &g ...
- MySQL数据库时间类型datetime、bigint、timestamp的查询效率比较
以下文章来源方志朋的博客,回复"666"获面试宝典 来源:https://juejin.im/post/6844903701094596615 数据库中可以用datetime.bi ...
最新文章
- Android软键盘遮挡的四种解决方案
- UVa11464 - Even Parity(递推法)
- 剑指offer 算法 (时间效率)
- 中plot 函数中字体大小_Excel中的VLOOKUP函数
- Python单元测试之pytest
- 北斗导航 | GNSS技术在自动驾驶中的作用
- 并发编程之Synchronized
- flex如何做响应式设计_响应式设计-您做错了!
- heap 的一些用法
- Mybatis之typeAlias配置的3种方法
- 是不是每个人的成长路上都会有迷茫的阶段?
- T-SQL多个小计+合计,分类汇总
- 微信支付功能测试用例
- 在Windows Server 2012中搭建WEB服务器,附ASP配置方法
- mac 版本charles安装报错-Charles cannot configure your proxy settings while it is on a read-only volume.
- JS组合函数(Composition):原来如此!
- 【Linux】修改文件或文件夹权限的命令
- 查看BMP格式图片的十六进制代码
- Win10 收件箱添加QQ邮箱(2019年5月19日)
- 微信小程序:wx.makePhoneCall
热门文章
- 分配教室(C/C++)
- 星战前夜无烬星河服务器维护中,星战前夜无烬星河异常空间攻略 刷异常技巧分享...
- 重写(override)equals方法的必要性探究
- 如何使用excel批量生成sql语句
- c# winform 扁平化窗口_C# 如何在winform窗体自定义一个扁平化控件(转)
- EN 1154建筑五金件受控关门装置—CE认证
- 汽车之家配置参数抓取
- jacobian 矩阵意义_对雅可比矩阵的理解
- Android开机流程
- Say Hello To Everyone!