如何获得最近的更长时间

时间:2016-06-14 15:52:14

标签: sql-server

我一直在尝试在SQL Server中获得最接近的更长时间,我在名为TIMETEST的表中使用列IDTi包含这些值:

ID     Ti  
---------------
1      01:00:00  
2      03:09:00  
3      07:00:00  
4      12:00:00  

当我尝试

SELECT TOP 1 * 
FROM TIMETEST
WHERE ('1:59' < Ti)

它返回&#34; 03:09:00&#34;这是正确的,但当我尝试

SELECT TOP 1 * 
FROM TIMETEST
WHERE ('12:00:00' < Ti)

我应该得到&#34; 01:00:00&#34;但它返回一个空列。

3 个答案:

答案 0 :(得分:0)

24小时时间对12小时?

尝试这样做以获得凌晨1点

SELECT TOP 1 *  FROM TIMETEST WHERE ('00:00:00' < Ti) ORDER BY Ti

如果您想通过12小时的时间来完成,那么将需要更多的逻辑,但您必须具体说明上午或下午的时间。

答案 1 :(得分:0)

两件事。首先,您需要ORDER BY。几乎在任何情况下,当您拥有TOP时,您应该使用ORDER BY。所以:

SELECT TOP 1 * 
FROM TIMETEST
WHERE '1:59' < Ti
ORDER BY Ti ASC

其次,如果列不是time数据类型,则比较将以字符串形式完成。为了安全起见,您可以强制转换常量:

SELECT TOP 1 * 
FROM TIMETEST
WHERE CAST('1:59' as TIME) < Ti
ORDER BY Ti ASC

答案 2 :(得分:0)

再次感谢 @Matt ,我能够在24小时内完成 我添加了一个名为DOW的列,这意味着一周中的某天,我正在使用Android代码 所以,如果我尝试:
Select * from TIMETEST Where Ti > '12:00:00' AND DOW = 'Tuesday' ORDER BY Ti
我得到一个空集,这意味着在12:01:00和23:59:00之间没有包含时间的列我的Android代码会自动将查询更改为 第二天工作正常。
Select * from TIMETEST Where Ti > '00:00:00' AND DOW = 'Wednesday' ORDER BY Ti
谢谢你的回答 任何需要Android代码的人都应该发表评论,我会将其添加到答案中