Правильная обработка операций с датами в Гремлин - PullRequest
0 голосов
/ 27 октября 2018

Я использую AWS Neptune Gremlin с gremlin_python.

Моя дата в свойстве сохраняется как datetime, как требуется в Спецификации Нептуна .

Я создал его, используя код Python, как это:
properties_dict['my_date'] = datetime.fromtimestamp(my_date, timezone.utc)
, а затем построил вершину со свойствами:

for prop in properties:
    query += """.property("%s", "%s")"""%(prop, properties[prop])

Позже, взаимодействуя с построенным графом, яЯ могу найти вершины только с помощью запроса на точное совпадение строк, например:
g.V().hasLabel('Object').has("my_date", "2017-12-01 00:00:00+00:00").valueMap(True).limit(3).toList()

Как лучше всего обращаться с датой или датой-временем в Gremlin?
Как определить диапазонтакие запросы, как "дают мне все вершины с датой в 2017 году" ?

1 Ответ

0 голосов
/ 29 октября 2018

Лично я предпочитаю хранить значения даты / времени в днях / секундах / миллисекундах с начала эпохи.Это определенно будет работать с любой базой данных Graph и значительно упростит запросы диапазона.Кроме того, преобразование в дни или секунды, начиная с эпох и обратно, должно быть простым вызовом метода практически на любом языке.

Итак, когда вы создаете свой словарь свойств, вы можете упростить свой код, изменив его на:

properties_dict['my_date'] = my_date

... как my_date должно представлять количество секунд с начала эпохи.И запрос диапазона будет таким простым:

g.V().has("Object", "my_date", P.between(startTimestamp, endTimestamp)).
  limit(3).valueMap(True)
...