Как преобразовать определенный формат даты в правильный тип данных и запросить связанные записи между датами? - PullRequest
0 голосов
/ 22 мая 2019

Я изучаю neo4j, и у меня проблема с тем, что заданный набор данных, который я загрузил, имеет странный формат даты, который я не могу запросить, используя функции даты в bt neo4j, потому что он был загружен в виде строки. Формат следующий:

╒══════════════════════════╕ │"t.date" │ ╞══════════════════════════╡ │"Mon 18 Feb 2019 12:18:57"│ ├──────────────────────────┤ │"Mon 18 Feb 2019 12:18:57"│ └──────────────────────────┘

Я уже создал узел, который содержит date в качестве свойства и сохраняет даты в указанном выше формате.

Как я могу изменить это, чтобы я мог запросить связанный узел для получения результатов BETWEEN определенных дат, например:

MATCH (t:Text) WHERE t.date = 'Mon 18 Feb 2019 12:18:57' RETURN t.description;

Мне нужно иметь возможность запрашивать Texts между определенными датами, например, тексты, написанные между Mon 18 Feb 2019 12:18:57 и Mon 19 Feb 2019 12:18:57

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 мая 2019

После того, как вы преобразовали строку даты в формат datetime, вы можете выполнить запрос ниже, чтобы получить текстовое описание, когда дата находится между 18 и 19 февраля 12:18:57. Обратите внимание на букву «Т» в середине. Это значит время.

MATCH (t:Text)
 WHERE t.date > datetime('2019-02-18T12:18:57') 
   AND t.date < datetime('2019-02-19T12:18:57')
 RETURN t.description;

Ссылка: https://neo4j.com/docs/cypher-manual/current/functions/temporal/datetime/#functions-datetime-create-string

1 голос
/ 22 мая 2019

Есть два способа:

  1. Измените существующее свойство даты на Neo4j 'DateTime'. Который может быть легко опрошен. ( РЕКОМЕНДУЕТСЯ )

  2. Сохраните свойство даты как есть и используйте apoc для сравнения даты каждый раз, когда вы хотите запросить. (НЕ РЕКОМЕНДУЕТСЯ)

Вы можете использовать функцию apoc.date.parse из APOC Plugin для анализа строки даты в время эпохи , указав SimpleDateFormat

Вы можете использовать следующий запрос, чтобы изменить существующие даты на Neo4j 'DateTime': (для решения 1)

MATCH (n:Text)
WHERE n.date IS NOT NULL
SET n.date=datetime({epochmillis:apoc.date.parse(n.date, 'ms',"EEE dd MMM yyyy HH:mm:ss")})

См. Neo4j DateTime

Примечание: Установите APOC перед выполнением вышеуказанного запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...