T-SQL - получить значение между двумя датами - PullRequest
1 голос
/ 30 сентября 2011

Я только что посмотрел такой пример, который показывает, как получить все столбцы по дате, вот он ...

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)

... но дело в том, что я пытался изменить его, чтобы получить значения в течение последних 50 минут. Вот оно

SELECT  value, my_date_col
FROM myTable
WHERE convert(varchar, my_date_col, 14) BETWEEN convert(varchar, dateadd(minute, -50, getdate()), 14) AND convert(varchar, getdate(), 14)

Но это не работает :( Так что мой вопрос в том, как использовать col my_date_col в таком выражении?

Любой полезный комментарий приветствуется

Ответы [ 4 ]

3 голосов
/ 30 сентября 2011

Полагаю, ваш my_date_col - это столбец DateTime, тогда вам не нужно приведение. Приведение необходимо, потому что образец использует строковое представление дат.

DECLARE @date DATETIME
SET @date = GETDATE()

SELECT value, my_date_col 
FROM myTable WHERE my_date_col BETWEEN dateadd(minute, -50, @date) AND @date
1 голос
/ 30 сентября 2011

Это должно работать нормально, если my_date_col - это DATETIME:

SELECT  value, my_date_col
FROM myTable
WHERE my_date_col BETWEEN dateadd(minute, -50, getdate()) AND getdate()

Если ничего не возвращено, есть нет строк с my_date_col впоследние 50 минут.

0 голосов
/ 14 марта 2013
select value1, date_column from @Table
WHERE date_column between date1 and date2
0 голосов
/ 30 сентября 2011

Избавьтесь от операторов CONVERT, вы хотите сравнивать даты, а не varchars.

SELECT  value, my_date_col
FROM myTable
WHERE  my_date_col BETWEEN dateadd(minute, -50, getdate()) AND getdate(), 14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...