我遇到了一个问题,我的MySQL表有一个存储UTC时间偏移的字段。该字段为时间类型。这是出于遗留原因,我无法将列类型更改为更好的表示形式。然而,MySQL支持这一点。它允许用户在时间字段中存储负值,以表示负时差。我使用querydsl生成实体类,并将该字段映射到java。sql。时间物体。现在,当DB中有负值时,我面临一个问题。爪哇。sql。Time类将任何负值转换为前一天的时间。例如,如果DB中的值为-04:00:00,则Java对象的时间为20:00:00。我曾考虑将其转换为持续时间,但后来我遇到了UTC时区偏移在某些地区重叠的问题。
在这里,负偏移量下降到-12:00:00,正偏移量上升到14:00:00。现在的问题是,我不能区分-12:00和12的Java对象中的值之间的差异,因为它们都在java对象中设置为12:00:00。12:00:00到14:00:00也有来自双方的重叠值。
任何处理这种情况的建议都将受到高度赞赏。
我不能帮助QueryDSL。
在java.time中,用java.time.ZoneOffset
类表示从UTC偏移。
您可以尝试这两种方法中的任何一种,看看它们是否有效。
也许你可以将你的MySQLTIME
值作为文本检索。然后解析为ZoneOffset
对象。
String o = myResultSet.getString( … ) ; // "-12:00:00" or "14:00:00", and such.
ZoneOffset zoneOffset = ZoneOffset.of( o ) ;
我不知道这是否有效,但是您可以尝试直接将MySQLTIME
提取为ZoneOffset
。指定所需的Java类作为参数。
ZoneOffset zoneOffset = myResultSet.getObject( … , ZoneOffset.class ) ;
问题内容: 我需要计算用户在网站上花费的时间。登出时间与登出时间之间的区别是,给我类似“ X先生花了4个小时43分钟”。因此,为了存储the4小时43分钟,我这样声明: 时间NOT NULL 这是有效的还是更好的存储方式?我需要存储在数据库中,因为我还有其他计算需要将其用于+其他用例。 问题答案: 最好将其存储为整数秒数。 该会是干净和简单-即 正如Tristram所指出的,使用该字段存在局限性
问题内容: 我需要以分钟/秒为单位存储歌曲持续时间,我需要使用TIME,但是在编写INSERT语句时如何指代某个持续时间?我表中的数据类型已经是TIME,我应该只将STR_TO_DATE字符串值“ 4:29”吗? 问题答案: 首先,在这里看看:http : //dev.mysql.com/doc/refman/5.0/en/time.html 将缩写值分配给TIME列时要小心。MySQL将冒号的缩
我们希望用户注册他们从事某项工作的时间。例如,假设我为一个项目工作了两个半小时,然后我想用(两小时三十分钟)填写表单输入,并将其存储在数据库中。同样的时间是1:45——一小时四十五分钟——来接另一个案子。然后,我们将使用该信息计算应分配给该活动的金额。 例如,如果一小时是10美元,那么: < li>15分钟- 我们是否应该将<code>2:30 谢谢!
我想把24小时表示为“持续时间”。也就是说,应该是从00:00:00到24:00:00。像今天上午12点到明天上午12点这样的事情是不好的。这也是24小时,但这不是我想要的。此外,这个“持续时间”不应该附带日期或日期的概念。 如何使用Joda Time完成此操作? 编辑- 用例——“我想创建一个调度程序。24小时的“周期”被分成任意大小的切片,如20分钟、30分钟或1小时。我只想用Joda创建一个
问题内容: 我有一个价值,我想得到另一个正好是1个月前的时间。 我知道可以用(想要另一个)进行减法,但这会导致a,而我反过来需要它。 问题答案: 尝试AddDate: 产生: 游乐场:http://play.golang.org/p/QChq02kisT
问题内容: 我有数千张在坦桑尼亚拍摄的照片,我想将每张照片的日期和时间存储在MySQL数据库中。但是,该服务器位于美国,当我尝试存储坦桑尼亚的日期时间(在美国的Spring夏时制时间)处于“无效”小时之内时,我遇到了问题。坦桑尼亚不执行夏令时,因此该时间实际上是有效时间。 其他复杂情况是,来自许多不同时区的协作者将需要访问存储在数据库中的日期时间值。我希望他们 总是 以坦桑尼亚的时间出现,而不是出