我有一张表CLIENT_HOUR
CLIENT_ID(varchar) THE_TIME(time 7) HOUR_MIN HOUR_MAX
850505 09:00:00.0000000 6 9
850505 12:00:00.0000000 10 12
850505 15:00:00.0000000 13 15
850505 18:00:00.0000000 16 18
我想根据计算机上的小时排序。
例:
计算机的时间是< 9然后列出小时9,...
9个计算机的时间是< 12然后列出12小时,...
12所取代;计算机的时间是< 15然后列出15小时,...
15 - ;计算机的时间是< 18然后上市时间18,....
这意味着我想显示与计算机小时相对应的第一个元素。
我正在使用C#4.0和SQL Server 2008 R2。我不知道我是否可以在SQL或C#中执行此操作。 我更喜欢SQL。
答案 0 :(得分:0)
我假设您正在使用C#构建SQL语句。
可能有一种方法可以从SQL中的CURRENT_TIMESTAMP中检索一小时,但目前我无法访问MS SQL来试用它。
我主要用VB.NET编写,所以这里是我通常用来构建SQL语句的代码。
Dim SQLString As String = String.Format("SELECT * FROM CLIENT_HOUR WHERE HOUR_MIN >= {0} AND HOUR_MAX <= {1}", Now.AddHours(-3).Hour, Now.Hour)
当时间是在午夜和凌晨3点之间时,这是一个明显的问题。此外,您似乎想要根据3小时的时间块进行选择。
你可以用这个
Dim SQLString As String
Select Case Now.Hour
Case 0 To 3
SQLString = "SELECT * FROM CLIENT_HOUR WHERE HOUR_MIN >= 0 AND HOUR_MAX <= 3"
Case 4 To 6
SQLString = "SELECT * FROM CLIENT_HOUR WHERE HOUR_MIN >= 4 AND HOUR_MAX <= 6"
End Select
您也可以编写一个T-SQL并将C#中的小时作为参数传递给函数,但您也可以在C#中构建SQL并直接调用它。