2016-06-07 81 views
1

我试图确定表中最旧的记录,并且结果有冲突。最旧记录差异?

方案1

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

+1

我会重新索引并重建统计数据,然后再次尝试 – Peter4499

回答

4

看起来像您的索引看起来不正确,而在不同的查询中使用不同指数。只需调用这两个命令,清除所有索引,然后重新构建它,这可能需要很长时间,具体取决于您拥有多少个日志。

do ##class(Ens.Util.Log).%PurgeIndices() 
do ##class(Ens.Util.Log).%BuildIndices() 
+0

不幸的是我没有能力做到这一点,但我已经把我们的主机的请求。我会更新结果。 –

+0

如果您有访问权限,可以尝试通过[System Portal management](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_persother#GOBJ_persother_rls_existrbld) – DAiMor

+0

几乎零访问LIVE,谢谢:) –

0

有几件事情我会尝试:

  • 检查了TimeLogged确实是一个DATATIME场
  • 尝试强制转换为字符串和排序(有时隐式转换混淆排序)
  • 尝试铸成日期

最坏的情况:

尝试年份(TimeLogged),蒙订购H(TimeLogged),日(TimeLogged),小时(TimeLogged),分(TimeLogged),二(TimeLogged)

也,以防万一:

尽量选择年份(TimeLogged),月(TimeLogged) ,Time(TimeLogged),Hour(TimeLogged),Minute(TimeLogged),Second(TimeLogged) 以查看是否可以从TimeLogged中提取正确的值