2010-10-05 100 views
0

我想比较两个日期和时间彼此和 我想选择“StartTime”大于现在时间和“StartDate”大于现在日期的记录。SQL查询问题

但输出不正确。提前感谢。 我tabale'records是:

StartDate  StartTime 
------------------------------- 
1389/07/11 11:04 
1389/06/23 21:17 
1389/06/23 21:32 
1389/06/23 22:10 
1389/06/26 12:34 
1389/06/27 17:29 
1389/06/27 18:13 
1389/06/27 20:27 
1389/06/28 09:41 
1389/07/18 10:46 
1389/07/05 22:00 
1389/07/15 24:00 

输出为: 当查询是:(1)

SELECT  StartDate, StartTime 
FROM   Proj 
WHERE  (StartDate < '1389/07/15 ') AND (StartTime <= '20:20 ') 

StartDate  StartTime 
-------------------------------  
1389/07/11 11:04 
1389/06/26 12:34 
1389/06/28 09:41 
1389/07/18 10:46 

输出为: 当查询是:(2)

SELECT  StartDate, StartTime 
FROM   Proj 
WHERE  (StartDate > '1389/07/15 ') AND (StartTime >= '20:20 ') 

StartDate  StartTime 
------------------------------- 
NULL NULL 

正确的输出应该是:

StartDate  StartTime 
------------------------------- 
1389/07/18 10:46 

我使用波斯日期。

+0

你能给表模式?并查询时间小于或等于20:22。 – Sascha 2010-10-05 16:58:31

+0

运营商应该是“>”我是对吗? – bla 2010-10-05 16:59:52

+0

也许说明明显但日期和时间是保留的sql关键字,你的错误是什么?你有没有尝试过“select * from test where [date]''2010/10/05'and [time] <='20:20'”; – kd7 2010-10-05 17:00:07

回答

0

它解决了:

SELECT  StartDate, StartTime 
FROM   Proj 
WHERE  (StartTime < '20:20 ') AND (StartDate = '1389/07/15') OR 
         (StartDate > '1389/07/15') 
0

只是把你所拥有的上述和你的问题的说明,查询应该是:

select * from test where date>'2010/10/05' and time>='20:22' 

如果你发布你的问题和架构中,你的工作,我们会更多的细节能够帮助你更多。

0

我想选择记录“时间”大于现在时间和“日期”大于现在约会

首先要获取当前的日期时间(您现在),您可以使用SQL函数GETDATE()。 所以,如果你碰巧有一个datetime栏你可以只是做

SELECT * FROM Test WHERE LogDateTime >= GETDATE() 

这将在表测试其中LogDateTime塔内的日期时间值是在未来返回每个记录。

现在,虽然它有点复杂,但将日期和时间拆分为单独的列时可以使用相同的功能。

SELECT * FROM Test 
WHERE CONVERT(datetime, LogDate + ' ' + LogTime) >= GETDATE() 

如果LOGDATE或LOGTIME是空列,你可以使用ISNULL(<columnName>, <defaultvalue>)是安全的。