最早的记录差异?
Oldest Record discrepancy?
我试图确定 table 中最早的记录,但结果相互矛盾。
场景一
SELECT TOP 10 * FROM Ens_Util.Log ORDER BY TimeLogged ASC
SELECT TOP 10 text, TimeLogged, TraceCat, Type FROM Ens_Util.Log ORDER BY TimeLogged ASC
Text TimeLogged TraceCat Type
Email sent via mailserv:25 2016-05-08 01:00:01 (null) 4
[Requested record not found] 2016-05-08 01:01:13 (null) 2
[Requested record not found] 2016-05-08 01:04:39 (null) 2
[Requested record not found] 2016-05-08 01:04:53 (null) 2
[Requested record not found] 2016-05-08 01:05:22 (null) 2
[Requested record not found] 2016-05-08 01:05:45 (null) 2
[Requested record not found] 2016-05-08 01:05:58 (null) 2
[Requested record not found] 2016-05-08 01:05:58 (null) 2
[Requested record not found] 2016-05-08 01:06:08 (null) 2
[Requested record not found] 2016-05-08 01:06:15 (null) 2
场景 2a
SELECT TOP 10 TimeLogged FROM Ens_Util.Log ORDER BY TimeLogged ASC
TimeLogged
2015-10-10 16:30:46
2015-10-10 21:15:07
2015-10-11 22:08:18
2015-10-12 21:57:00
2015-10-13 21:39:27
2015-10-14 23:40:15
2015-10-15 23:28:10
2015-10-16 23:36:52
2015-10-17 23:10:04
2015-10-18 22:32:49
场景 2b
SELECT MIN(TimeLogged) FROM Ens_Util.Log
2015-10-10 16:30:46
问题
这里发生了什么?为什么会出现差异?最早记录的日期是什么时候? 2016-05-08
或 2015-10-10
?
我会尝试的一些事情:
- 检查 TimeLogged 确实是一个数据时间字段
- 尝试转换为字符串并排序(有时隐式转换会混淆排序)
- 尝试转换为日期
最坏情况:
尝试按年(TimeLogged)、月(TimeLogged)、日(TimeLogged)、小时(TimeLogged)、分钟(TimeLogged)、秒(TimeLogged)排序
另外,以防万一:
尝试 select 年 (TimeLogged)、月 (TimeLogged)、日 (TimeLogged)、小时 (TimeLogged)、分钟 (TimeLogged)、秒 (TimeLogged)
查看您是否可以从 TimeLogged
中提取正确的值
More 看起来你的索引不正确,而在不同的查询中使用不同的索引。只需调用这两个命令,清除所有索引,然后重新构建它,可能需要很长时间,具体取决于您有多少日志。
do ##class(Ens.Util.Log).%PurgeIndices()
do ##class(Ens.Util.Log).%BuildIndices()
我试图确定 table 中最早的记录,但结果相互矛盾。
场景一
SELECT TOP 10 * FROM Ens_Util.Log ORDER BY TimeLogged ASC
SELECT TOP 10 text, TimeLogged, TraceCat, Type FROM Ens_Util.Log ORDER BY TimeLogged ASC
Text TimeLogged TraceCat Type
Email sent via mailserv:25 2016-05-08 01:00:01 (null) 4
[Requested record not found] 2016-05-08 01:01:13 (null) 2
[Requested record not found] 2016-05-08 01:04:39 (null) 2
[Requested record not found] 2016-05-08 01:04:53 (null) 2
[Requested record not found] 2016-05-08 01:05:22 (null) 2
[Requested record not found] 2016-05-08 01:05:45 (null) 2
[Requested record not found] 2016-05-08 01:05:58 (null) 2
[Requested record not found] 2016-05-08 01:05:58 (null) 2
[Requested record not found] 2016-05-08 01:06:08 (null) 2
[Requested record not found] 2016-05-08 01:06:15 (null) 2
场景 2a
SELECT TOP 10 TimeLogged FROM Ens_Util.Log ORDER BY TimeLogged ASC
TimeLogged
2015-10-10 16:30:46
2015-10-10 21:15:07
2015-10-11 22:08:18
2015-10-12 21:57:00
2015-10-13 21:39:27
2015-10-14 23:40:15
2015-10-15 23:28:10
2015-10-16 23:36:52
2015-10-17 23:10:04
2015-10-18 22:32:49
场景 2b
SELECT MIN(TimeLogged) FROM Ens_Util.Log
2015-10-10 16:30:46
问题
这里发生了什么?为什么会出现差异?最早记录的日期是什么时候? 2016-05-08
或 2015-10-10
?
我会尝试的一些事情:
- 检查 TimeLogged 确实是一个数据时间字段
- 尝试转换为字符串并排序(有时隐式转换会混淆排序)
- 尝试转换为日期
最坏情况:
尝试按年(TimeLogged)、月(TimeLogged)、日(TimeLogged)、小时(TimeLogged)、分钟(TimeLogged)、秒(TimeLogged)排序
另外,以防万一:
尝试 select 年 (TimeLogged)、月 (TimeLogged)、日 (TimeLogged)、小时 (TimeLogged)、分钟 (TimeLogged)、秒 (TimeLogged) 查看您是否可以从 TimeLogged
中提取正确的值More 看起来你的索引不正确,而在不同的查询中使用不同的索引。只需调用这两个命令,清除所有索引,然后重新构建它,可能需要很长时间,具体取决于您有多少日志。
do ##class(Ens.Util.Log).%PurgeIndices()
do ##class(Ens.Util.Log).%BuildIndices()