sql - Error de conversión de DateTime al insertarlo en OrientDB
debugging (1)
2014-03-09T02:00:00 -> 2014-03-09T03:00:00
no existe cuando se incorpora el horario de verano (DST).
Debido a que ese tiempo específico es imposible cuando se usa DST, el error fue al transferir los datos de una base de datos que lo permitieron a uno que no lo hizo. La razón por la que Parse lo permite es porque usan el Tiempo Universal Coordinado (UTC), que no cambia con el horario de verano.
La corrección en OrientDB es la siguiente:
-- set timezone to utc
ALTER DATABASE TIMEZONE UTC
Error al convertir la fecha ''2014-03-09T02: 42: 09.893'' usando el formato: aaaa-MM-dd''T''HH: mm: ss.SSS
El tipo de error aquí es com.orientechnologies.orient.core.exception.OQueryParsingException
.
Configuré el formato DateTime usando:
ALTER DATABASE DATETIMEFORMAT yyyy-MM-dd''T''HH:mm:ss.SSS
Además, sé que esto es un error con Orient frente a la API Node que uso porque esto también falla en la consola:
INSERT INTO User ("configuraciones", "aceptedTerms", "activitiesCount", "appFirstUseDate", "birthday", "email", "equipo", "feedOption", "followerCount", "followingCount", "followingFeedLastReadAt", "gender "," objetivo "," height_unit "," height_val1 "," height_val2 "," kitchenSinkBadgesSeen "," lastRatePrompt "," lastVersionUsed "," level "," numReferrals "," platform "," popularFeedLastReadAt "," postCount ", "seenHamburgerInstructions", "seenRatePrompt", "stream", "timezone", "unsubscribedFromWorkoutEmails", "username", "weight", "weight_unit", "createdAt", "updatedAt", "objectId", "ACL", "sessionToken" ") VALUES ({" __type ":" Puntero "," className ":" Configuración "," objectId ":" K9X5P470hF "}, verdadero, 10, {" __type ":" Fecha "," iso ":" 2014- 03-09T03: 37: 53.270Z "}, {" __type ":" Fecha "," iso ":" 2000-03-29T00: 00: 00.000Z "}," [email protected] ", {" 1 " : [6,8,4]}, 1, 0, 0, {"__type": "Fecha", "iso": "2014-03-12T00: 32: 11.245Z"}, 2, 2, 1, 5 , 3, ["actividad", "agenda", "encontrar amigos", "registro", "compartir", "entrenamientos / nuevo", "perfil / l8QOwljKWh", "editarPerfil", " progress "," entrenamientos / hoy "], {" __type ":" Fecha "," iso ":" 2014-04-08T22: 23: 47.799Z "}," 2.4.3 ", 2, 0, 1, { "__type": "Fecha", "iso": "2014-04-08T22: 23: 45.070Z"}, 10, verdadero, verdadero, "b", "America / Havana", verdadero, "hannah00329", 128, 1, "2014-03-09T02: 42: 09.893", "2014-04-08T22: 43: 27.086", "l8QOwljKWh", {"*": {"leer": true}, "l8QOwljKWh": {"leer ": verdadero," escribir ": verdadero}}," t7h4bpx5ri8oyd3vfdt1l7e0b ")
Con el mismo error:
Error: com.orientechnologies.orient.core.exception.OQueryParsingException: Error en la conversión de la fecha ''2014-03-09T02: 42: 09.893'' con el formato: aaaa-MM-dd''T''HH: mm: ss.SSS
La mayoría de los otros DateTimes funcionan, pero por algún motivo, 1 de cada 10000 falla con este error.
Los otros DateTimes en mi mesa se ven exactamente iguales:
2013-06-28T04:50:35.717
2013-07-03T08:16:10.713
2012-12-27T19:56:52.030
EDITAR:
Tras una investigación más profunda, parece que a las 2 p. M. Del 9 de marzo es el día del juicio final ...
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
EDITAR:
Aquí están mis configuraciones de 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 |
--------------------------------+----------------------------------------------------+