проблема SQL-запроса - PullRequest
       15

проблема SQL-запроса

0 голосов
/ 05 октября 2010

я хочу сравнить две дату и время друг с другом и я хочу выбрать записи, которые «StartTime» больше, чем текущее время, а «StartDate» больше, чем текущая дата.

но вывод не правильный. Спасибо заранее. Мои табальные записи:

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

я использую персидскую дату.

Ответы [ 3 ]

0 голосов
/ 05 октября 2010

Я хочу выбрать записи, в которых "время" больше сейчас время , а "дата" больше дата сейчас .

Прежде всего, чтобы получить текущую дату (ваше сейчас), вы можете использовать функцию SQL GETDATE(). Так что если у вас есть столбец datetime, вы можете просто сделать

SELECT * FROM Test WHERE LogDateTime >= GETDATE()

Это вернет каждую запись в таблице Test, значение datetime в столбце LogDateTime которой находится в будущем.

Теперь, хотя это немного сложнее, то же самое можно использовать, когда вы разбили дату и время на отдельные столбцы.

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

Если LogDate или LogTime являются столбцами со значениями NULL, вы можете использовать ISNULL(<columnName>, <defaultvalue>) для безопасности.

0 голосов
/ 06 октября 2010

решено:

SELECT        StartDate, StartTime
FROM            Proj
WHERE        (StartTime < '20:20 ') AND (StartDate = '1389/07/15') OR
                         (StartDate > '1389/07/15')
0 голосов
/ 05 октября 2010

Просто взяв то, что у вас есть выше, и описание вашей проблемы, запрос должен быть:

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

Если вы опубликуете больше информации о вашей проблеме и схеме, в которой вы работаетебыть в состоянии помочь вам больше.

...