2012-03-20 82 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