我有一个名为TimeList
的表:
| Slot |
==============
| 10:00 |
| 11:00 |
| 12:00 |
| 13:00 | and so on
将时间保存在Varchar(5)
中期望的结果应该是显示时间大于当前时间的行,例如,如果当前时间是11:12 A.M.结果应该返回:
| Slot |
==============
| 12:00 |
| 13:00 |
我尝试将两个值转换为时间并将它们与:
进行比较SELECT *
FROM TimeList
WHERE Convert(Time, Slot) > Convert(Time, GETDATE())
但它没有说明Time
在SQL
无论如何我可以比较这两个时段吗?
答案 0 :(得分:2)
我认为,取决于您正在运行的SQL Server版本。在2012年或之后有一个CAST(作为时间),但我认为这是一个相当新的发展。所以...将当前日期/时间与时间表进行比较,时间表转换为"时间,如果是今天,"这样的事情应该有效:
SELECT *
FROM TimeList
WHERE Convert(Datetime, FORMAT (GETDATE(), 'd') + ' ' + Slot) > GETDATE()
相反,如果您想将时间与当前时间进行比较,请将其作为文字:
SELECT *
FROM TimeList
WHERE Slot > FORMAT(GETDATE(), N'hh\:mm')
答案 1 :(得分:1)
试试这个......
SELECT *
FROM TimeList
WHERE Slot > CONVERT(time,GETDATE())
答案 2 :(得分:0)
非常感谢您的所有答案,幸运的是,我从您的答案中找到了我的问题的答案。
解决方案是:
SELECT *
FROM TimeList
WHERE Slot > CONVERT(varchar(5),GETDATE(), 108)
似乎108是保存为char / varchar的时间格式,其中Slot也被归类为