TSQL, как получить время smalldatetime между двумя временами smalldatetime? - PullRequest
0 голосов
/ 16 июня 2010

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

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

Пример

  • startTime endTime value1
  • 2/2 / 01 16:00 2/2 / 01 18:00 1
  • 2/2 / 01 21:00 2/2 / 01 22:00 2
  • 2/2 / 01 05:00 2/2 / 01 22:00 3

select getdate () дает 2/2 / 03 21:40 время является единственным важным фактором

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

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

Ответы [ 4 ]

1 голос
/ 16 июня 2010
    SELECT value1
      FROM tableA
     WHERE CONVERT(varchar, GETDATE(), 108) 
   BETWEEN CONVERT(varchar, Table_1.StartDate, 108) 
       AND CONVERT(varchar, Table_1.EndDate, 108);

Должен сделать трюк

1 голос
/ 16 июня 2010

Как насчет

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

РЕДАКТИРОВАТЬ

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

и попробовать что-то вроде Дата /Преобразование времени с использованием 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 голосов
/ 22 декабря 2018

В случае, если это может кому-нибудь помочь, я даю решение, которое я использовал для получения указанных значений-

моя таблица mw_shift выглядит следующим образом-

enter image description here

примечание: столбцы 'ftime' и 'ttime' имеют время (тип данных)

теперь следующая команда выбора дает желаемое значение-

select name from mw_shift where CONVERT(time,'10:32:00') between ftime and ttime 

select name from mw_shift where CONVERT(time,'20:32:00') between ftime and ttime 

select name from mw_shift where CONVERT(time,'00:32:00') between ftime and ttime 
0 голосов
/ 07 июня 2016

и КОНВЕРТ (varchar, Table.column, 113) МЕЖДУ '06 ИЮНЬ 2016 14: 00: 00: 000 'И '07 ИЮНЬ 2016 08: 00: 00: 000'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...