【问题标题】:Why does this apoc code not work in browser?为什么这个 apoc 代码在浏览器中不起作用?
【发布时间】:2017-04-17 20:04:55
【问题描述】:

我在 neo4j 的浏览器中运行了CALL apoc.date.parseDefault('1969-07-21 02:56:15', 's') YIELD value。但它不起作用。

错误是:There is no procedure with the name apoc.date.parseDefault registered for this database instance. Please ensure you've spelled the procedure name correctly and that the procedure is properly deployed.

我可以毫无问题地运行 CALL apoc.load.json(url) YIELD value 或 CALL apoc.help("apoc") 工作。

(最初在评论here中提出的问题)

【问题讨论】:

    标签: neo4j cypher neo4j-apoc


    【解决方案1】:

    自从 Neo4j 3.1 引入用户定义的函数以来,已经迁移了几个 APOC 程序,包括日期解析。此外,这些函数支持可选参数,因此不需要单独的 parseDefault() 函数,因为 parse() 处理得很好,所以它已被删除。

    试试这个:

    RETURN apoc.date.parse('1969-07-21 02:56:15', 's') as date
    

    您可以内联调用函数,而无需使用 CALL 或 YIELD。

    不幸的是,有些文档在反映这些转换方面有些滞后。虽然日期/时间函数看起来是最新的,但一些示例仍然引用已删除的过程,而不是引用当前函数。

    【讨论】:

    • 你知道如何解析这种形式的日期:'1969-07-21T02:56:15'吗?我有与这里描述的相同的问题:markhneedham.com/blog/2017/03/06/…
    • 解决方案在博文中,在 T 周围加上引号,如下所示:RETURN apoc.date.parse('1969-07-21T02:56:15', 's', "yyyy-MM-dd'T'HH:mm:ss") as date
    • 如果我想在后面的查询中使用解析的结果怎么办?由于 RETURN 只能在查询结束时使用,因此不能在查询中间使用它来传递结果。并且不能使用 CALL apoc ..... YIELD value as value1。(错误:没有为此数据库实例注册名称为 apoc.date.parse 的过程。请确保您已正确拼写过程名称并且程序已正确部署)
    • 看看WITH 子句。在其用途中,WITH 用于将查询的不同部分连接在一起,并更改范围内的变量。 WITH apoc.date.parse('1969-07-21T02:56:15', 's', "yyyy-MM-dd'T'HH:mm:ss") as date ...
    • 谢谢。刚刚发现apoc.date.parse('1969-07-21T02:56:15', 's', "yyyy-MM-dd'T'HH:mm:ss")可以直接用表达式代替值。
    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 2017-11-21
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2012-02-22
    • 2023-03-03
    相关资源
    最近更新 更多