-
nebula 版本:3.1.0
-
部署方式: 单机
-
安装方式: RPM
-
是否为线上版本: N
-
时区配置为:UTC+08:00
-
问题的具体描述
问题1:
根据时间函数的描述,我理解datetime应该是无论是什么时区都返回UTC时间才对。但是我测试的并不是。
这几个函数的结果与文档示例的并不一致,datetime还是东八区的时间。
问题2:
find path的时间和match的时间结果不一致,match的结果是真实数据导入的。
问题3:
find path 的边过滤条件==
不生效,但是!=
是生效的。
真实数据是17:13:37,但是因为问题2,显示的是不对的。
使用等于,无论是真实时间还是find path 展示的时间都是无法匹配的。
使用不等于可以过滤,说明是匹配到了时间的。
以上问题麻烦排查一下,另外关于时间这块感觉有点乱,能否详细说明下。
1 个赞
console会将时区转换成你本机设置的时区,想观察这个现象得直接用graph client查询
这个问题确实是在client端先发现,然后才在console验证
client端find path的结果时间跟console是一样的
spw
4
能给一下 space product_1007 相关点边的 schema 吗?
点
+-----+-----------------------------------+
| Tag | Create Tag |
+-----+-----------------------------------+
| "c" | "CREATE TAG `c` ( |
| | `zf` string NULL, |
| | `zs` int64 NULL, |
| | `xs` double NULL, |
| | `be` bool NULL, |
| | `rq` date NULL, |
| | `sj` time NULL, |
| | `rqsj` datetime NULL, |
| | `sjc` int64 NULL |
| | ) ttl_duration = 0, ttl_col = """ |
+-----+-----------------------------------+
边
+------+-----------------------------------+
| Edge | Create Edge |
+------+-----------------------------------+
| "cc" | "CREATE EDGE `cc` ( |
| | `eventtime` int64 NULL, |
| | `zf` string NULL, |
| | `zs` int64 NULL, |
| | `xs` double NULL, |
| | `be` bool NULL, |
| | `rq` date NULL, |
| | `sj` time NULL, |
| | `rqsj` datetime NULL, |
| | `sjc` int64 NULL |
| | ) ttl_duration = 0, ttl_col = """ |
+------+-----------------------------------+
spw
6
关于 console 中 datetime 返回的不是 UTC 时间,我没有复现,我用 3.1.0 版本试了下 console 返回的 datetime 确实是 UTC 时间。
RETURN now(), timestamp(), date(), time(), datetime();
+------------+-------------+------------+-----------------+----------------------------+
| now() | timestamp() | date() | time() | datetime() |
+------------+-------------+------------+-----------------+----------------------------+
| 1677122473 | 1677122473 | 2023-02-23 | 03:21:13.649000 | 2023-02-23T03:21:13.649000 |
+------------+-------------+------------+-----------------+----------------------------+
➜ ~ date -d @1677122473
Thu 23 Feb 2023 11:21:13 AM CST
不知道是不是你 Linux 时间配置有哪里不一样?
关于查询语句不一致的问题,可以请 @jmq2020 帮忙定位下。
我这边确实是这样的,你的时区也是UTC+08:00吗
spw
8
我的 timezone_name 没有配置。timezone_name 默认是 “UTC+00:00:00”,所以问题可能出在这。
Aiee
9
console打印的时间是通过客户端转换过时区的
nebula保证时间类型数据插进去的和查出来的一样
嗯,那这样问题1应该没事了。
现在主要是find path 这个在时间的处理上有一点问题,在java client端测试发现find path 在解析时使用asNode转换后,timeZoneOffset是0,但是正常的这里应该有28800是对的。
然后另外一个问题就是find path过滤条件不生效。
Aiee
13
看了下发现这个格式也支持的 日期时间 - NebulaGraph Database 手册
timeZoneOffset 是客户端鉴权时候从服务端拿的, 一个 session 的 timeZoneOffset 肯定是一样的, 你看除 path 外其他结构的 timeZoneOffset 正常吗, 如果只有 path 中的 node 时区不对那可能是bug
另外看看 return 你红框中的过滤条件看一下算出来的值具体多少
path的解析是只有find path 有问题,match的path也是没问题的
Aiee
15
你问题二中 match 语句返回的是一个点, 不是一条路径, 试下用 match p=()… return p, 这才是返回一个路径
测试了下match return path 确实时间也不一样,那这样时间不统一啊
Aiee
17
另一个问题有答复吗?find path 边属性过滤不生效的问题
Aiee
19
应该是路径中utc where 条件里做了时区转换导致匹配不上 上面issue已经修了
system
关闭
20
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。