关系经济人类预测化学自然
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

面试官数据库日期类型字段,需要兼容不同数据库,应如何选择?

11月7日 飞凤谷投稿
  作者:sp42a来源:httpsp:zhangxin。blog。csdn。netarticledetails124955363
  当设计一个产品,其中很多地方要把日期类型保存到数据库中,如果产品有兼容不同数据库产品的需求,那么,应当怎样设计呢?
  当然,首先想到的是,使用数据库的Date或DateTime类型,可是看看不同数据库这些类型间的区别吧,真让人望而止步。
  MySQL数据库:
  它们分别是date、datetime、time、timestamp和year。date:yyyymmdd格式表示的日期值time:hh:mm:ss格式表示的时间值datetime:yyyymmddhh:mm:ss格式timestamp:yyyymmddhhmmss格式表示的时间戳值year:yyyy格式的年份值。
  范围:date10000101到999912313字节time838:59:59到838:59:593字节datetime1000010100:00:00到9999123123:59:598字节timestamp19700101000000到2037年的某个时刻4字节year1901到21551字节
  Oracle数据库:
  Date类型的内部编码为12
  长度:占用7个字节
  数据存储的每一位到第七位分别为:世纪,年,月,日,时,分,秒
  TIMESTAMP是支持小数秒和时区的日期时间类型。对秒的精确度更高
  TIMESTAMPWITHTIMEZONE类型是TIMESTAMP的子类型,增加了时区支持,占用13字节的存储空间,最后两位用于保存时区信息
  INTERVAL用于表示一段时间或一个时间间隔的方法。在前面有多次提过。INTERVAL有两种类型。YEARTOMONTH能存储年或月指定的一个时间段。DATETOSECOND存储天,小时,分钟,秒指定的时间段。
  sqlserver:
  datetime和smalldatetimedatetime数据类型所占用的存储空间为8个字节,其中前4个字节用于存储1900年1月1日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期;后4个字节用于存储从此日零时起所指定的时间经过的毫秒数。smalldatetime数据类型使用4个字节存储数据。其中前2个字节存储从基础日期1900年1月1日以来的天数,后两个字节存储此日零时起所指定的时间经过的分钟数。smalldatetime数据类型与datetime数据类型相似,但其日期时间范围较小,从1900年1月1日到2079年6月6日。此数据类型精度较低,只能精确到分钟,其分钟个位为根据秒数四舍五入的值,即以30秒为界四舍五入。
  如果没有兼容多种数据库这个要求,我会毫不犹豫的使用数据库的Date类型。
  因为如果使用Java框架产生代码,对数据库中定义为Date类型的字段,甚至能在页面上产生出JS的时间选择框,的确能节省很多开发时间。而兼容不同数据库,就希望产品在由一种数据库,迁移到另外一种数据库时,尽可能小的代价,使用了Date,看来就很困难了。
  有一个疑问,不知道目前流行的ORM对这个处理得是不是好?因为工作不怎么涉及这方面,所以不大了解。
  在之前的设计开发中,因为有支持多种数据库这种需求,所以首先否定了日期时间这样的类型。
  曾经使用过毫秒数(Java的System。currentTimeMillis())这种方式,但是选用这个方式,考虑的不是使用起来是否方便或者数据迁移,而是考虑到下面的原因:
  Java取到的毫秒数是对时间点的一种准确描述。定义如下:java。lang。System。currentTimeMillis(),它返回从UTC1970年1月1日午夜开始经过的毫秒数。
  我们可以看到,这个定义,保证了这个时间值能够被后续设计开发的人员正确和准确的理解,能够为所有的应用正确理解,能够在所有时区上正确反映为正常的时间形式。
  当时的产品设计是有海外客户的,所以当时的设计,在数据库里保存的,应该是一个准确的时间。例如20120926080000实际上并没有严格的表示出时间,因为北京时间2012年9月26日8点和格林威治时间2012年9月26日8点显然是不一样的。
  虽然我们都是在一个确切的时区里,例如中国都是使用东八区时间,但是需要考虑的是:有些产品是可能有海外客户的产品所运行的机器,时区的设置未必都是东八区。
  在这种情况下,如果数据库里的时间不准确,会给程序运行带来问题。这种方式最大的缺点在于:不方便对时间进行分组查询,比如按月统计、按季统计DBA在维护时,不能直观的根据返回的行结果,看到简单明了的结果(看到的是毫秒数)
  使用这种方式的特点是牺牲一点易用性和可理解性(不易于维护和理解),满足了查询结果的直观性和准确性要求,同时最大限度考虑运行效率。为了解决这个问题,我设计了一个辅助的措施,就是建立一个数据库函数来进行时间转换,把毫秒数的时间转为制定时区和格式的时间串,DBA在维护时可以使用。测试了Oracle和DB2上,都可以这样。例如之前的查询的时候为:SELECTusername,useraddtimefromuserinfo
  这个查询显示的是毫秒数,使用内置函数后写成:SELECTusername,date2str(useraddtime)fromuserinfo
  这样返回的就是东八区、预先定义好格式的字符串了。
  在之后的设计里,还使用过YYYYMMDDHHmmSST格式,其中的T指时区,加入时区,带来的影响有:日期时间字段就不能在使用数值来存储了,字符串比数字存储和检索的效率都要低。应用程序需要加上额外的处理
  带来的好处是:便于DBA维护到什么时候,即便没有看到数据库设计文档,都能看明白并准确理解数据库中一条信息中,这个字段保存到确切信息
  使用这种方式的特点是牺牲一点效率,满足了查询结果的直观性和准确性要求。
  总结一下,字段类型的选择,还是根据场景的需要来选择,从功能、效率要求、持续开发的要求、维护的要求几个方面综合考虑。
搜索 投诉 评论 转载

我的初一故事【我的初一故事】魏梓桐时光太匆匆,而我初一的故事也如同一场期待已久的演出,不经意间拉开了帷幕。八月底的西安用蒸笼形容丝毫不过,偏偏这时候正值军训,无休止的闷热……特战荣耀进入红蝎当卧底的肖飞,为何要把燕破岳带回敌营《特战荣耀》剧照勇气是战胜困难的法宝,但在困境中时,光有勇气还不够,还需要有足够的智慧。电视剧《特战荣耀》中,肖飞是一个各项技能都很优秀的军人,但是自从优秀的燕破岳……手机聊天软件有什么安全隐患我们的生活越来越离不开手机了,它可以帮我们处理工作,它可以给我们娱乐,甚至手机里的聊聊天软件还能帮我们交友、相亲,确实非常的方便,那么你知道手机聊天软件有什么安全隐患吗?……企业高层意见统一你该怎么办身在职场就避免不了竞争,同时也免不了沦为奥利奥的时候,那么什么才是奥利奥,可以解释为两块饼干互不相让针锋相对,把你夹在中间纠结万分,谁都不能得罪但是又没有好的方法来说服你的另一……展望规范发展机遇满满的一年沐浴着新年的阳光,新时代的大幕已经拉开。回首过去的2017年,整个国内金融理财市场风云变幻,不确定性与不稳定性更加凸显:严监管、去杠杆、金融反腐风暴、A股纳入MSCI、保险回归……凯旋造句用凯旋造句大全151、1953年冬,赵寿山省长率领的中国人民第三届赴朝慰问团陕西分团凯旋,洗尘晚宴就在大厦东小亭楼里举行,我们叫“散班饭”。152、中午,飞机凯旋汉口机场,周来同志代表……面试官数据库日期类型字段,需要兼容不同数据库,应如何选择?作者:sp42a来源:httpsp:zhangxin。blog。csdn。netarticledetails124955363当设计一个产品,其中很多地方要把日期类型保存……婚礼礼炮燃放方法结婚礼炮怎么放?热闹喜庆的婚礼上,总是少不了婚礼礼炮来助兴。不过,新人们一定要掌握好婚礼礼炮燃放方法,以免出现意外,为自己的完美婚礼造成遗憾。一、礼花弹礼花弹是常用……三八女王节,愿你满心欢喜,一路生花三八女神节,祝福的心语写给爱人作者:昕月蓝殇岁月铭记着深刻的过往,有一份牵挂,总在平淡的日子里。春风吹拂送温暖,百花齐放露笑颜,三八女神节,祝福的心语写给爱人,一片……贷款余额1117。8亿元!惠州农行为实体经济注入活水金融是经济发展的倍增器,今年以来,农业银行惠州分行(下称惠州农行)以服务实体经济为重点,紧扣大湾区建设,大力推进普惠金融,深耕绿色信贷和科技金融,为惠州经济高质量发展注入强大的……短发女生剪碎发发型打造帅气中性范儿黑色发色显得自然纯粹,顺直的短发经裁剪后变得清爽干练,非常具有独特的个性,搭配的背心更是彰显出了清新校园气息。蓬松的短发设计,碎发长短不一层次感浓厚,搭配的墨镜更是具有时……女生小肚子左侧疼是怎么回事呢女人出现肚子疼,一般都是由妇科疾病引起的,但是当这种情况发生的时候,不少女性选择了隐忍,或者是简单的使用止疼药止痛。其实,不清楚病因的情况下,这些处理方式都是不当的,毕竟一些妇……
篮球壁纸第六期,NBA球员LOGO球衣壁纸性爱时间过长女性很受伤手相看你能否拥有富贵人生把心安住在快乐的事情上爱视昂小心5种习惯很伤眼!别让你的眼睛提前进入更年期夜间男士护肤如何进行利拉德最后阶段我们出现了些问题这场球我们不配赢在与客户沟通的过程中我们如何用分钟打消用户买贵了张坤又清仓了!这是什么信号?宝宝口腔溃疡怎么办口腔溃疡的症状与宋元思书原文及鉴赏3月18日辽宁能源涨停分析煤炭,电改,碳中和概念热股
吃不吃早餐和生男生女有关和女强人谈恋爱男人该知道这些化蝶作文600字秋天欢乐会透视职业生涯的必经阶段如何进行职业生涯规划步骤浅析文君新醮的故事给我工作励志名人名言大全潜水刀可以托运吗房屋租赁税谁交?广州居住证到期了如何续期人生中最郁闷的两件事

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州