0

我有一个记录表。在此表中有一个列类型 datetime。如何选择最新的每日记录?有人可以帮我吗?

谢谢!

更新! 在此表中有以下列:InventoryNr、SerialNr、Oldusername、OlduserId、oldcostcenter、newusername、newuserid、newcostcenter、changedby、changedate。

此处将自动插入设备。因此,如果在计算机上检测到监视器,它将记录在此表中。但是,如果我将显示器移动到另一台电脑上,它将再次被记录。但在某些情况下,监视器可以在两台 PC 之间“跳转”。和 PC 一样。如果 PC 的所有者已更改,那么它将自动插入此处等。因此,如果我运行此查询,我只需要设备中的最新行,从当天开始。希望你现在能明白我的意思。

谢谢!

4

3 回答 3

1

无论何时发生,要获取最后 20 行:

SELECT TOP (20) cols FROM dbo.LoggingTable ORDER BY EventDate DESC;

要获取今天发生的所有行,按降序排列:

SELECT cols FROM dbo.LoggingTable
  WHERE EventDate >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
  ORDER BY EventDate DESC;

只获取最后 20 行,只要它们发生在今天(这意味着您可以获得 < 20 行):

SELECT TOP (20) cols FROM dbo.LoggingTable
  WHERE EventDate >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
  ORDER BY EventDate DESC;

我强烈建议不要将任何公式应用于列。

于 2012-07-23T14:26:53.610 回答
0

如果使用 SQL 2008,您可以:

SELECT * FROM Table WHERE TimeStamp > CAST(GETDATE() AS DATE) ORDER BY TimeStamp DESC

于 2012-07-23T14:28:33.563 回答
0

尝试这个:

select yourFields from yourTable
group by yourFieldDate,yourOtherFields
having yourFieldDate= MAX(yourFieldDate)
于 2012-07-23T14:25:20.600 回答