我对SQL Server完全陌生,对此一无所知。我试着写了一个类似oracle的查询,但我没有看到预期的结果。
我的表有一个列whenChanged -示例值是2011-10-05 21:22:27.0
表中有100k行,我想要在过去1天,1小时内发生更改的行的列表。
我编写了一个查询,比如select top 10 * from tablename where where select> whenchanged -1。
但是看不到我想要什么
发布于 2011-10-06 20:19:42
尝试执行此操作,以获取前一天更改的所有记录:
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'
发布于 2011-10-06 20:19:35
要获取过去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
相比,您可以使用2011-10-05 21:22:27.0
,它与DateTime中的2011-10-05 00:00:00.0
相同。
发布于 2012-03-06 06:25:35
在过去一个小时内:
select * from tablename
where order_date > DateAdd(hour, -1, GETDATE()) and order_date<=GETDATE()
https://stackoverflow.com/questions/7679962
复制