我有一个Logging表。在此表中有一个列类型datetime。我如何选择最新的每日记录?有人可以帮助我吗?
谢谢!
更新! 在此表中,有以下列: InventoryNr,SerialNr,Oldusername,OlduserId,oldcostcenter,newusername,newuserid,newcostcenter,changedby,changedate。
此处将自动插入设备。因此,如果在计算机上检测到监视器,它将被记录在此表中。但是,如果我将显示器移动到另一台电脑,它将再次被录制。但在某些情况下,显示器可以在两台PC之间“跳”。和PC一样,它是一样的。如果PC的所有者已被更改,那么它将自动插入此处等等。因此,如果我运行此查询,我只需要设备的最新行,从当天开始。希望你现在能理解我的意思。
谢谢!
答案 0 :(得分: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;
我强烈建议不要在列中应用任何公式。
答案 1 :(得分:0)
试试这个:
select yourFields from yourTable
group by yourFieldDate,yourOtherFields
having yourFieldDate= MAX(yourFieldDate)
答案 2 :(得分:0)
如果使用SQL 2008,您可以:
SELECT *
FROM Table
WHERE TimeStamp > CAST(GETDATE() AS DATE)
ORDER BY TimeStamp DESC