我在C#中有这个小程序,它不断地将数据发送到我的一个表(DataTable)。数据格式始终与长度相同。
我在这里有4个不同的ID
: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。如您所见,我正在尝试将我的Customer表与我的数据联系起来 表以便指定ID。 DATEPART语句允许给出时间范围 小时或分钟等,但不允许“在4:30到5:30之间。”
答案 0 :(得分: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)