как преобразовать строку в метку времени в neo4j - PullRequest
0 голосов
/ 09 мая 2019

Я загрузил метки времени в строковом формате с помощью CSV в Neo4j, так как я не знал, как установить их в формате даты и времени с самого начала. Затем я нашел способ использовать функцию «split» в строках, чтобы затем преобразовать ее в целые числа, а затем в datetime, и я получил большую часть работы за исключением мелких проблем

Я пытался разделить бит даты на "-", а время на ":", но я не уверен, как справиться с пробелом между датой и временем, из-за которого мое решение не работает должным образом

MATCH (p:event)
WITH p, [x IN split(p.tstamp, "-") | toInteger(x)] AS parts
WITH p,parts,   [y IN split(p.tstamp, ":") | toInteger(y)] AS timeparts

SET p.timestamp = datetime({day: parts[2], month: parts[1], year: parts[0], hour: timeparts[0], minute:timeparts [1], second:timeparts[2] 
});

Исходный пример отметки времени:

//original timestamp
09/01/2019 17:34:58.0000

Я ожидал получить, например:

//e.timestamp           
09/01/2019 17:34:58 

Но я получил:

//e.timestamp            
"2019-01-01T00:34:58Z"

1 Ответ

2 голосов
/ 10 мая 2019

Вы можете попытаться использовать функции apoc для анализа даты и времени в любом формате.

Я добавил событие с вашей исходной отметкой времени

{
  "tstamp": "09/01/2019 17:34:58"
}

Изапрос сделал работу

MATCH (p:Event)
SET p.timestamp = datetime({ epochMillis: apoc.date.parse(p.tstamp, 'ms', 'MM/dd/yyyy HH:mm:ss') })

После этого запроса мое событие выглядит следующим образом:

{
  "tstamp": "09/01/2019 17:34:58",
  "timestamp": "2019-09-01T17:34:58Z"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...