数据库里时间的存储,你更偏向于哪种方式?

Inhibitory 2013-07-16 07:28:00
1. 使用Timestamp,则会在数据库里存储:2013-07-16 07:20:01。
在不同时区,显示的都是2013-07-16 07:20:01,但其实他们并不是同一时间了。

2. 存储事件发生的时间毫秒值,在不同时区解析出来的时间表示不一样,但表达都是同一时间,能解决时区问题。

我个人偏向于存储时间的毫秒值,但是在很多地方看到却都是存储Timestamp,讲数据库的视频里也大多是用Date,Timestamp。
当我们的程序有多国用户时,解决时区问题是必要的。

你更喜欢哪一种方式呢?
...全文
360 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
T0M 2013-07-21
  • 打赏
  • 举报
回复
引用 14 楼 suciver 的回复:
第一种比较直观,维护和比对起来也方便。至于多国用户了必然涉及国际化了,一般涉及国际化的网站都有让用户选择自己的国家语言根据他们选择的相应国语我们在转换相应的时区。
都选英语你就哭吧,好多国家。我们是按照货币代码分时区和做汇率结算。
  • 打赏
  • 举报
回复
用的是@Temporal(TemporalType.TIMESTAMP)的路过。 这要看数据库是否支持对应的类型了。
zuxianghuang 2013-07-16
  • 打赏
  • 举报
回复
我一般用datetime
suciver 2013-07-16
  • 打赏
  • 举报
回复
第一种比较直观,维护和比对起来也方便。至于多国用户了必然涉及国际化了,一般涉及国际化的网站都有让用户选择自己的国家语言根据他们选择的相应国语我们在转换相应的时区。
风_晓寒 2013-07-16
  • 打赏
  • 举报
回复
存时间格式吧,根据时区的不同对数据处理下咯,看毫秒值会死掉了。。
风中的木头 2013-07-16
  • 打赏
  • 举报
回复
引用 10 楼 Inhibitory 的回复:
[quote=引用 8 楼 viszl 的回复:] 可以参考jira,公司内部不同地区的部门公用一套jira,会出现时区问题,但是jira里会有一个设置时区的地方,你显示的时间都是以这个时区为标准
美国用户显示中国时间,你觉得客户会同意吗?[/quote] 存储统一用一个时区,至于显示,完全可以通过在视图层通过判断IP地址等手段作一次针对时区的转换吧
风中的木头 2013-07-16
  • 打赏
  • 举报
回复
引用 7 楼 viszl 的回复:
直接存date,有时候你需要对某一天进行分组统计,如果你存的是毫秒就不好操作了,时区的问题除非你的产品是外网项目,不然基本上都是在一个时区里使用的
比较赞同这个观点,后续作分析的话面对ms存储会崩溃的
Inhibitory 2013-07-16
  • 打赏
  • 举报
回复
引用 8 楼 viszl 的回复:
可以参考jira,公司内部不同地区的部门公用一套jira,会出现时区问题,但是jira里会有一个设置时区的地方,你显示的时间都是以这个时区为标准
美国用户显示中国时间,你觉得客户会同意吗?
Inhibitory 2013-07-16
  • 打赏
  • 举报
回复
引用 7 楼 viszl 的回复:
直接存date,有时候你需要对某一天进行分组统计,如果你存的是毫秒就不好操作了,时区的问题除非你的产品是外网项目,不然基本上都是在一个时区里使用的
这个是需要考虑的。
loveofmylife 2013-07-16
  • 打赏
  • 举报
回复
可以参考jira,公司内部不同地区的部门公用一套jira,会出现时区问题,但是jira里会有一个设置时区的地方,你显示的时间都是以这个时区为标准
loveofmylife 2013-07-16
  • 打赏
  • 举报
回复
直接存date,有时候你需要对某一天进行分组统计,如果你存的是毫秒就不好操作了,时区的问题除非你的产品是外网项目,不然基本上都是在一个时区里使用的
rencht 2013-07-16
  • 打赏
  • 举报
回复
第一种比较直观; 要是第二种做测试的到数据库看数据肯定要疯掉= =
Inhibitory 2013-07-16
  • 打赏
  • 举报
回复
引用 3 楼 flagiris 的回复:
一般用第一种吧,比较直观,若是含有多国用户取出来的时候用TimeZone转一下好了。。。 当然还得具体情况具体分析,反正暂时还没碰到存ms的。。。
TimeZone转的话是可以,但是需要知道保存的TimeZone是哪一个TimeZone,这样需要存储原始的TimeZone
想喝咖啡的貓 2013-07-16
  • 打赏
  • 举报
回复
long ,原因加减算法简单。
菖蒲老先生 2013-07-16
  • 打赏
  • 举报
回复
一般用第一种吧,比较直观,若是含有多国用户取出来的时候用TimeZone转一下好了。。。 当然还得具体情况具体分析,反正暂时还没碰到存ms的。。。
oh_Maxy 2013-07-16
  • 打赏
  • 举报
回复
我们用的是字符串存储,比较土。。
Inhibitory 2013-07-16
  • 打赏
  • 举报
回复
1. 2013-07-16 07:20:01: 一眼看出时间,在程序里直接就是Date或者Timestamp了。 2. 时间的毫秒值:一眼看不出时间,显示时需要相应的转换成Date或者Timestamp再使用。
  数据库操作是软件行业人员必备的技能,这门视频教学课程主要是针对从事软件技术的新人的,适合在校大学生、准备转行到IT行业的新人、软件公司新入职员工。这门课程主要涉及Oracle数据库的基础操作和SQL语法,因为绝大部分软件技术人员掌握这些就可以了,数据库的大部分功能,我们平时是用不到的,所以不用花太多时间去研究。把这门课程面的内容学会,足以胜任日常性数据库相关的工作。  这门视频教学课程不是针对DBA的培训课程,从事DBA工作的人在软件行业人员的占比不高,就业面不太广,有做DBA志向的同学可以到专门的培训机构学习Oracle的OCA、OCP、OCM课程,他们有针对应试的培训内容,他们也可以安排相应的考试,考试通过后会有相应的证书,这门课程偏向编程应用,不是面向Oracle认证考试的。   我对Oracle数据库有十几年的使用经验,我们公司的数据库是Oracle数据库,基本上每天的编程工作都要写SQL语句,公司的历史数据比较多,需要通过编写SQL语句来进行查询处理,有两年时间,我的工作就是编写Oracle数据库存储过程。  这个视频教学课程使用Oracle 19c版本的数据库进行讲解。每节课程都结合工作实际,都是干货,都经过认真准备,相信可以给大家带来很大帮助。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧