专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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

  作者: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维护到什么时候,即便没有看到数据库设计文档,都能看明白并准确理解数据库中一条信息中,这个字段保存到确切信息
  使用这种方式的特点是牺牲一点效率,满足了查询结果的直观性和准确性要求。
  总结一下,字段类型的选择,还是根据场景的需要来选择,从功能、效率要求、持续开发的要求、维护的要求几个方面综合考虑。

吴亦凡被罚6亿,盘点因偷税漏税被钉在耻辱柱永不翻身的明星网红最近新闻报道,吴亦凡因为偷税漏税被罚款6个亿,再一次被这一数字惊呆了。不知从何时起,作为普通人的我们看到几个亿似乎都没感觉了,明星网红偷税漏税事件屡见不鲜,为了躲避法律的空子,无所拆迁已圆满结束?确定了今年起,3类老房子或全拆重建自今年年初以来,金融管理部门已经举办了四次关于金融支持实体的研讨会。在市场上,高管的频繁声明发出了明确的稳定经济信号。最近的会议是11月21日,央行与中国银行业和保险监督管理委员会中石化与卡塔尔能源签署长购协议近日,中国石化与卡塔尔能源公司签署了为期27年的液化天然气(LNG)长期购销协议,卡塔尔能源公司每年将向中国石化供应400万吨液化天然气。卡塔尔位于波斯湾,面积虽小,但天然气储量居国家出手!央妈出招!房子现在到底能不能买?自从疫情爆发一来房地产可谓是一路低迷,也是赶上国家房住不炒的政策,房地产市场是一落千丈!到现在国家排名前百的房企没有暴雷的一只手也能数的过来吧。图片来源网络虽说初衷是好的,可是时机做人,最掉价的六种行为天不言自高,海不言自深,地不言自厚,人不言自正。无论何时,都要谋正业,走正道,不要有以下这几种掉价的行为。不自量力作家亦舒说面子是一个人最难放下的,又是最没用的东西。当你越是在意它收盘丨沪指收涨0。4重回3100点,地产银行等蓝筹股表现强势11月25日,A股三大指数全天走势分化,截至收盘,沪指涨0。4,深成指跌0。48,创业板指跌1。12。两市超3200只个股下跌。板块方面,金融地产基建电信煤炭上涨题材股尽数回落,储被迫实现躺平的我,终于明白了躺平的真谛在我的印象中,人生实现躺平是一件非常值得羡慕的事情。躺平意味着你可以做点自己想做的事情,躺在柔软舒适的沙发或者床上。刷刷短视频,追追剧,看着大千世界,花开花落,潮起潮落,我自岿然不人的一生,总有一些不容易的事,关键在于熬文永失我爱的莉莉安图源自网络如有侵权联系删除一直喜欢看书,特别是散文。写景的散文特别喜欢作者的文字描述的美好的事物和景色抒情的散文读了往往让我觉得身临其境,有一种很强的代入感,此情好消息!天津女排成头号赢家,5人荣登票选榜首,李盈莹或是票王不知不觉间,中国女排超级联赛第二周的比赛基本宣告结束,天津,上海和江苏等队分别取得了一波三连胜。其中身为卫冕冠军的天津女排,面对的几位对手整体实力都较弱,他们真正的挑战其实是在下一北京国安输球居然有脸起诉还不嫌丢人吗?足协杯第二轮甘肃泾川文汇点球大战战胜北京国安,爆出大冷,中超豪门沦为球迷笑柄。出其不意,点球制胜本来以为这件事球迷调侃几天就过去了,令人没想到的是,居然还有后续。据足球报消息,目前荷兰vs厄瓜多尔谁会赢厄瓜多尔与荷兰的比赛,荷兰会取得胜利。厄瓜多尔在世界杯预选赛当中可以脱颖而出,足以说明这个球队的实力在南美洲是顶级的。虽然这个球队近几年在大型的国际比赛当中,竞争力和知名度并不是很
战场得意重启和谈?普京达到了什么目的?俄乌冲突已经143天了,俄乌和谈也好几次了,但在美国干预下,和谈依然无望。可俄罗斯副外长放出风声,我们愿意与乌克兰和谈,同时也提到和谈需满足条件。俄罗斯提出的条件在原先的基础上,保山上徹也的妈妈走火入魔,没得救了山上徹也的妈妈应该内疚!可惜了,到现在她并没有意识到,称还会再捐。日本统一教邪教组织,眼见安倍被刺一案的矛头动机指向自己,事件发酵过猛,教会高管坐不住了,决定退还山上彻也母亲十年的2010年,湖北暴雨冲出3000具尸骸,73岁老人老泪纵横我知道身份我国中南部地区就是湖北省,它属于我们国家的三大自然区中的东部季风区,位于秦岭淮河一带,就是这样的一个地区,隐藏着一个不为人知的惊天大秘密。在2010年的一场暴雨中发生了重大事件。据唐山烧烤店事件施暴者身份背景解析秀才侃娱今天看各种信息平台的热搜都找不到唐山的热搜。整个事件从全民愤怒到不知所措。说实话,我不知道是该佩服某些新闻媒体的好消息而不是坏消息,还是该责怪某些强大的势力。6月16日,河考上公务员后,我好像换妈妈了,当今95后大学生的真实写照文苗老师导语转眼间又是一年的毕业季,大学生们现在可能已经在社会上打拼了。对于大部分毕业生来讲,想在当今社会找到一份理想的工作并不是一件简单的事情,学生们难免会做一些精致的简历,来吸乌鲁木齐房价跌至8000多元,乌鲁木齐楼市只有学区房房价比较坚挺乌鲁木齐房价虽然在下跌,但是跌幅相对来说却没有别的城市那么明显。在过去的8月份里面,乌鲁木齐的新房房价环比下跌了0。1,二手房房价环比也是下跌了0。1,两个房价跌幅都比较小。不知道世界工厂东南飞?这份报告用数字告诉你真相越南等东南亚国家是否将取代中国成为新的世界工厂?近来这个话题一直是公众和媒体关注的焦点之一。阿里研究院跨境电商研究中心在2022年服贸会上发布的数字贸易时代我国跨境产业链变迁及新比微信安卓8。0。28最新官方内测版下载发布IT之家9月7日消息,微信安卓平台迎来了8。0。28测试版更新,本次更新安装包文件详细信息如下微信安卓内测版8。0。28(ARM64)安装包文件大小254MB更新时间2022090比亚迪高端芯片问世,王传福不会卖给国外,国外车企吃了闭门羹我们知道,美国是半导体产业的发源之地,凭借着自身在技术和产业建造方面的先发优势,一直有较大的话语权。不过这样的并没有积极去协助他国共同推动全球芯片事业的发展。而是对包括中国在内的其AppleWatchSeries8正式发布,全新温度传感器,实现车祸碰撞检测刚刚AppleWatchSeries8发布,四个铝金属表壳配色和三个不锈钢表壳配色可选择,还有新的爱马仕表带版本。最大更新在于温度传感器终于来临。一个在靠近手腕的地方,另外一个在显iPhone的未来是什么?耳机手表和汽车只是连接的开始,接下来苹果预计很快会发布其VRAR硬件产品,并重新定义被Meta公司定义过的元宇宙。iPhone可能会演变为这些设备的大枢纽。在下一场变革来临之前,人
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网