最早的记录差异?

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-082015-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()