2010-06-16 4 views
0

У меня есть таблица с двумя столбцами smalldatetime, где один - startTime, а другой - endTime. Мне нужно выбрать все значения из таблицы, которые между временами обоих столбцов сравниваются с временем getdate().TSQL, Как получить smalldatetime время между двумя временами smalldatetime?

Я использую SQL-Server 2005.

пример

  • EndTime value1 начальный промежуток
  • 2/2/ 16:00 2/2/ 18:00 1
  • 2/2/ 21:00 2/2/ 22:00 2
  • 2/2/ 05:00 2/2/ 22:00 3

выберите GETDATE() дает 2/2/ 21:40 время является единственным важным Фактор

так что мне нужно, чтобы получить 2 и 3

заранее спасибо

+0

Почему значение 1 ... –

+0

@Lieven, я имел в виду value1, должен возвращать 2 и 3. Конечно, значение1 = 1 исключено – eugeneK

ответ

1
SELECT value1 
     FROM tableA 
    WHERE CONVERT(varchar, GETDATE(), 108) 
    BETWEEN CONVERT(varchar, Table_1.StartDate, 108) 
     AND CONVERT(varchar, Table_1.EndDate, 108); 

следует сделать трюк

+0

@Ardman, можете ли вы установить между типами varchar? – eugeneK

+0

Это, безусловно, сработало для меня :) –

1

Как насчет

SELECT * 
FROM TABLE 
WHERE getdate() BETWEEN startDate AND endDate 

EDIT

Вы должны лок по этой ссылке

и попробовать что-то вроде Date/Time Conversions Using SQL Server

DECLARE @Table TABLE(
     startDate smalldatetime, 
     endDate smalldatetime, 
     value1 int 
) 

INSERT INTO @Table SELECT '02 Feb 2010 16:01', '02 Feb 2010 18:00', 1 
INSERT INTO @Table SELECT '02 Feb 2010 21:00', '02 Feb 2010 22:00', 2 
INSERT INTO @Table SELECT '02 Feb 2010 05:00', '02 Feb 2010 22:00', 3 

DECLARE @MyGetDate DATETIME 

SELECT @MyGetDate = '2 Mar 2003 21:40' 

SELECT * 
FROM @Table 
WHERE convert(varchar, @MyGetDate, 14) BETWEEN convert(varchar, startDate, 14) AND convert(varchar, endDate, 14) 
+0

Я заинтересован только в проверке времени, дата не имеет значения – eugeneK

+0

спасибо за внимание, но решение Ardman кажется короче и читабельнее – eugeneK

+0

Спасибо :) Это тоже помогло – user592704

0

и CONVERT (VARCHAR, table.column, 113) МЕЖДУ '06 июня 2016 года 14: 00: 00: 000' и '07 июня 2016 08: 00: 00: 000?

+0

Должно быть, где CONVERT (varchar, Table.column, 113) BETWEEN '06 Jun 2016 14: 00: 00: 000 'AND '07 Jun 2016 08: 00: 00: 000' – Gene

+0

почему вы не редактируете вопрос, а не добавляете комментарий? –

Смежные вопросы