我想将一个列与一个日期进行比较,以防它是可解析和可比较的,例如:
MATCH (n)
WHERE n.last_used = "no_information" OR datetime(n.last_used) < datetime(datetime())
RETURN n.name, n.last_used
假设last_used
列内容可以是“no_information”字符串或有效的日期/时间字符串。
我仍然得到一个错误:
无法将文本解析为日期时间“no_information”
如果字符串不是有效的日期时间,是否可以跳过解析和比较?
2条答案
按热度按时间rpppsulh1#
假设理想情况是日期已经是日期时间格式,以便检查数据类型(例如通过Apoc过程apoc.meta.isType),
一个非常简单的检查字符串的方法可以是使用正则表达式,例如(在这种情况下,我检查“yyyy-mm-dd”,在情况下,它可能更复杂)
注意:我使用了
UNION
子句,因为下面的子句也应该可以工作,但是由于某种原因,它给予了我一个错误。或者,您可以编写一个custom procedure,它调用
datetime(..)
函数,在出现异常的情况下,捕获该函数并返回null
。u3r8eeie2#
如果您的日期时间格式如下所示:2022年6月1日12时50分35.556+0100秒
然后可以使用以下查询:
正则表达式表示只过滤包含0到9之间的数字、连字符、字母T、点、加号或冒号的last_used。
样本结果: