2012-03-20 87 views
0

我有这个小程序在C#中不断发送数据到我的一个表(DataTable)。数据格式总是和长度一样。如何在SQL Server中选择特定的ID和时间

有4个不同的ID s我在这里工作:2000,2001,2002,...这些都在不同的表中。 ID列是我的DataTable列中的外键。

最初我以为我可以检索我的DataTable中最后一个插入的行,针对特定的ID。但是,我意识到insert语句会按照发送顺序将值分配到数据库中。因此,我决定简单地采取ID并根据时间戳获取最后一行数据。

我试过使用DatePart但这限制了我只有几个小时。我想显示一个基于小时和分钟的时间。例如:2002 between '4:30:00' and '5:30:00'

此外,我是否必须做一个加入声明,因为我会从另一个表中调用ID列?

我用尽这至今:`

use LogDatabase 
select * from dbo.DataTable 
join CustomerTable 
on(Customer_ID = CustIDFk) 
where DATEPART(HH, TimeStamp)between 4 and 5 ` 

传入的数据串看起来很多这样的:

3-13-2011 3:30:21 2002: 45 Temp:81 Albany NY etc.... 

我已经在我的DataTable取得数据的每个字段列。如您所见 2002是我的CustomerTable中称为Customer_ID的ID。我已将此 设置为CustomerTable中的主键,并且CustIDFk是与Customer_ID链接 的外键。正如您所看到的,我试图将我的客户表与我的Data 表加入以指定ID。日期部分语句允许用在其他任一小时或分钟,得到时间范围 但不允许“之间4:30和5:30。

+5

您需要以显示一些示例数据和目前已撰写的任何疑问 - 即使它们不工作 – Yuck 2012-03-20 14:21:23

+0

我同意Yuck。目前,这对我没有多大意义,表格定义和一些示例数据将回答一整车的问题,我们将不得不要求您了解您的问题。 – 2012-03-20 14:36:53

+0

@Rick:请**不要**代码示例和类似的东西到评论 - **真的很难**阅读!请改为:**更新**你的原始l问题提供更多信息! – 2012-03-20 14:42:08

回答

1

会是这样的工作?

DECLARE @today DATETIME = CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME) 

SELECT * 
FROM dbo.DataTable 
WHERE TIMESTAMP BETWEEN DATEADD(mi, 30, DATEADD(hh, 4, @today)) AND DATEADD(hh, 5, @today) 
+0

谢谢,这正是我所需要的。 – Rick 2012-03-21 18:34:04