我是SQL Server的新手,对此一无所知。我尝试编写类似于oracle的查询,但我没有看到预期的结果。
我的表有一列whenChanged - 样本值是2011-10-05 21:22:27.0
表中有100k行,我想要在过去1天内更改的行列表,1小时blah.blah.blah。
我写了一个查询,例如从tablename中选择top 10 *,其中whenchanged> whenchanged -1。
但是看不到我想要的东西
答案 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()