OSQL 中的 OrientDB 日期操作以在同一天但不同年份查找具有节点的路径
OrientDB date manipulation in OSQL to find a path with nodes on the same day but different years
我有一个结构如下的图表:
A --> B
A 有一个日期字段。
这仍然基于与 中相同的问题,但不同之处在于我不关心尝试在一个 OSQL 调用中完成所有操作以创建边。在这种情况下,我只是试图生成一个看起来像这样的路径:
A1(日期=2014-01-01)---> B <--- A2(日期=2013-01-01)
并且 return 一个 table 仅包含 A1 和 A2 id。
我已经开始编写 MATCH 查询,如下所示:
MATCH {CLASS: A, AS: A1} -edgeTypeA->
{AS: B} <-edgeTypeA-
{AS: A2, WHERE: {$matched.A1.Date=$currentMatch.Date}
RETURN A1, B, A2
这有效,但它只是 returning 匹配基本上 A1 和 A2 是完全相同的日期(包括 A1 和 A2 是相同节点的地方)。
我知道我可以使用 format() 提取部分日期字段...例如,如果我只想要一个包含年份的字符串,我可以使用 $currentMatch.Date.format('yyyy')得到它,但我仍然没有想出如何为我的查询增加那个日期。
在我的旧问题中看到 后,我开始工作了。我正在添加我的解决方案用于存档目的。希望它可以帮助其他需要在 OSQL 查询中进行日期操作的人。
这是我最终得到的结果:
MATCH {CLASS: A, AS: A1} -edgeTypeA->
{AS: B} <-edgeTypeA-
{AS: A2, WHERE: ($matched.A1.Date.format('yyyy').asInteger()=sum($currentMatch.Date.format('yyyy').asInteger(),-1) AND
$matched.A1.Date.format('MM-dd')=$currentMatch.Date.format('MM-dd') ) }
RETURN A1,A2
我得到了适合我的数据的东西:
+----+------+------+
|# |A1 |A2 |
+----+------+------+
|0 |#49:30|#49:32|
|1 |#55:44|#56:46|
|2 |#53:0 |#53:2 |
|3 |#55:20|#55:22|
|4 |#49:42|#49:44|
|5 |#50:32|#50:34|
+----+------+------+
必须调用 sum() and asInteger() 感觉有点麻烦,但现在我理解了它并且可以使用它。
我有一个结构如下的图表:
A --> B
A 有一个日期字段。
这仍然基于与
A1(日期=2014-01-01)---> B <--- A2(日期=2013-01-01)
并且 return 一个 table 仅包含 A1 和 A2 id。
我已经开始编写 MATCH 查询,如下所示:
MATCH {CLASS: A, AS: A1} -edgeTypeA->
{AS: B} <-edgeTypeA-
{AS: A2, WHERE: {$matched.A1.Date=$currentMatch.Date}
RETURN A1, B, A2
这有效,但它只是 returning 匹配基本上 A1 和 A2 是完全相同的日期(包括 A1 和 A2 是相同节点的地方)。
我知道我可以使用 format() 提取部分日期字段...例如,如果我只想要一个包含年份的字符串,我可以使用 $currentMatch.Date.format('yyyy')得到它,但我仍然没有想出如何为我的查询增加那个日期。
在我的旧问题中看到
这是我最终得到的结果:
MATCH {CLASS: A, AS: A1} -edgeTypeA->
{AS: B} <-edgeTypeA-
{AS: A2, WHERE: ($matched.A1.Date.format('yyyy').asInteger()=sum($currentMatch.Date.format('yyyy').asInteger(),-1) AND
$matched.A1.Date.format('MM-dd')=$currentMatch.Date.format('MM-dd') ) }
RETURN A1,A2
我得到了适合我的数据的东西:
+----+------+------+
|# |A1 |A2 |
+----+------+------+
|0 |#49:30|#49:32|
|1 |#55:44|#56:46|
|2 |#53:0 |#53:2 |
|3 |#55:20|#55:22|
|4 |#49:42|#49:44|
|5 |#50:32|#50:34|
+----+------+------+
必须调用 sum() and asInteger() 感觉有点麻烦,但现在我理解了它并且可以使用它。