【问题标题】:DateTime conversion error on insert into OrientDB插入 OrientDB 时出现日期时间转换错误
【发布时间】:2014-07-03 19:45:02
【问题描述】:

使用日期“2014-03-09T02:42:09.893”转换时出错 格式:yyyy-MM-dd'T'HH:mm:ss.SSS

这里的错误类型是com.orientechnologies.orient.core.exception.OQueryParsingException

我使用以下方法设置日期时间格式:

ALTER DATABASE DATETIMEFORMAT yyyy-MM-dd'T'HH:mm:ss.SSS

此外,我知道这是 Orient 与我使用的 Node API 的错误,因为这在控制台中也失败了:

INSERT INTO 用户(“settings”、“acceptedTerms”、“activitiesCount”、 “appFirstUseDate”、“生日”、“电子邮件”、“设备”、“feedOption”、 “followerCount”、“followingCount”、“followingFeedLastReadAt”、 “性别”,“目标”,“身高单位”,“身高_val1”,“身高_val2”, “kitchenSinkBadgesSeen”、“lastRatePrompt”、“lastVersionUsed”、“level”、 “numReferrals”、“平台”、“popularFeedLastReadAt”、“postCount”、 “seenHamburgerInstructions”、“seenRatePrompt”、“流”、“时区”、 “unsubscribedFromWorkoutEmails”、“用户名”、“体重”、“体重单位”、 “createdAt”、“updatedAt”、“objectId”、“ACL”、“sessionToken”)值 ({"__type":"Pointer","className":"Settings","objectId":"K9X5P470hF"}, 真,10,{“__type”:“日期”,“iso”:“2014-03-09T03:37:53.270Z”}, {"__type":"日期","iso":"2000-03-29T00:00:00.000Z"}, "REMOVED@gmail.com", {"1":[6,8,4]}, 1, 0, 0, {"__type":"日期","iso":"2014-03-12T00:32:11.245Z"}, 2, 2, 1, 5, 3, [“活动”,“计划”,“找朋友”,“日志”,“分享”,“锻炼/新”,“个人资料/l8QOwljKWh”,“编辑资料”,“进度”,“锻炼/今天”], {"__type":"日期","iso":"2014-04-08T22:23:47.799Z"}, "2.4.3", 2, 0, 1, {"__type":"日期","iso":"2014-04-08T22:23:45.070Z"}, 10, 真的, 真的, "b", "美国/哈瓦那", true, "hannah00329", 128, 1, “2014-03-09T02:42:09.893”、“2014-04-08T22:43:27.086”、“l8QOwljKWh”、 {"*":{"read":true},"l8QOwljKWh":{"read":true,"write":true}}, "t7h4bpx5ri8oyd3vfdt1l7e0b")

同样的错误:

错误: com.orientechnologies.orient.core.exception.OQueryParsingException: 使用日期“2014-03-09T02:42:09.893”转换时出错 格式:yyyy-MM-dd'T'HH:mm:ss.SSS

大多数其他 DateTimes 工作,但由于某种原因,每 10000 个中有 1 个因此错误而失败。

我表中的其他日期时间看起来完全一样:

2013-06-28T04:50:35.717
2013-07-03T08:16:10.713
2012-12-27T19:56:52.030

编辑:

经进一步调查,3 月 9 日下午 2 点似乎是世界末日……

SUCCESS:
2013-06-28T04:50:35.717Z
2013-07-03T08:16:10.713Z
2012-12-27T19:56:52.030Z

ERROR:
2014-03-09T02:42:09.893Z
2014-03-09T02:11:49.764Z
2014-03-09T02:02:43.987Z
2014-03-09T02:10:39.408Z
2014-03-09T02:37:10.196Z
2014-03-09T02:40:46.492Z
2014-03-09T02:22:26.589Z

编辑:

这是我的 OrientDB 设置

--------------------------------+----------------------------------------------------+
 NAME                           | VALUE                                              |
--------------------------------+----------------------------------------------------+
 Name                           | null                                               |
 Version                        | 9                                                  |
 Date format                    | yyyy-MM-dd                                         |
 Datetime format                | yyyy-MM-dd HH:mm:ss                                |
 Timezone                       | America/Toronto                                    |
 Locale Country                 | US                                                 |
 Locale Language                | en                                                 |
 Charset                        | UTF-8                                              |
 Schema RID                     | #0:1                                               |
 Index Manager RID              | #0:2                                               |
 Dictionary RID                 | null                                               |
--------------------------------+----------------------------------------------------+

【问题讨论】:

  • 您能显示您的时区和区域设置吗?从控制台使用“info”命令。
  • @Lvca 我忘了回复,但我添加了信息。这是迄今为止我遇到的最奇怪的错误:\
  • 我同意,这很奇怪,特别是因为我们完全使用标准 Java API 来做到这一点。我已经打开一个新问题来更好地跟踪它:github.com/orientechnologies/orientdb/issues/2567

标签: sql debugging datetime insert orientdb


【解决方案1】:

2014-03-09T02:00:00 -> 2014-03-09T03:00:00 在合并夏令时 (DST) 时不存在。

因为在使用 DST 时不可能指定特定时间,所以错误在于将数据从允许它的数据库传输到不允许它的数据库。 Parse 允许它的原因是因为它们使用协调世界时 (UTC),它不会随 DST 改变。

OrientDB 中的修复如下:

-- set timezone to utc
ALTER DATABASE TIMEZONE UTC

【讨论】:

    猜你喜欢
    • 2013-07-26
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多