SQL Server Query获取过去1天内更改的行数

时间:2011-10-06 20:17:00

标签: sql sql-server sql-server-2005 sql-server-2008

我是SQL Server的新手,对此一无所知。我尝试编写类似于oracle的查询,但我没有看到预期的结果。

我的表有一列whenChanged - 样本值是2011-10-05 21:22:27.0

表中有100k行,我想要在过去1天内更改的行列表,1小时blah.blah.blah。

我写了一个查询,例如从tablename中选择top 10 *,其中whenchanged> whenchanged -1。

但是看不到我想要的东西

3 个答案:

答案 0 :(得分:4)

尝试此操作以获取最后一天已更改的所有记录:

select top 10 * from tablename where whenchanged > DATEADD (D, -1, GETDATE())

http://msdn.microsoft.com/en-us/library/ms186819.aspx有关DATEADD函数的详细信息以及您可以指定的其他日期部分

编辑:如果你想获得两个日期之间的记录,那么这样的事情就可以了:

select * from tablename where whenchanged BETWEEN 'Date1ValueGoesHere' AND 'Date2ValueGoesHere'

答案 1 :(得分:2)

要在过去24小时内更改记录:

select * from tablename 
where whenchanged > DateAdd(hour, -24, GETDATE())

在过去一小时内:

select * from tablename 
where whenchanged > DateAdd(hour, -1, GETDATE())

今天要改变一切,你必须稍微调整一下:

select * from tablename 
where whenchanged >= cast(GETDATE() as date)

投射消除了时间部分,因此与2011-10-05 21:22:27.0相比,2011-10-05与DateTime中的2011-10-05 00:00:00.0相同。

答案 2 :(得分:0)

在过去一小时内:

select * from tablename 
where order_date > DateAdd(hour, -1, GETDATE()) and order_date<=GETDATE()