Как получить записи за последние 30 минут в MS SQL? - PullRequest
39 голосов
/ 17 декабря 2010

Я хочу получить записи за последние 30 минут в таблице.Как это сделать?Ниже мой запрос ..

select * from
[Janus999DB].[dbo].[tblCustomerPlay]
where DatePlayed < CURRENT_TIMESTAMP
and DatePlayed >
(CURRENT_TIMESTAMP-30)

Ответы [ 6 ]

75 голосов
/ 17 декабря 2010

Изменить это (CURRENT_TIMESTAMP-30)

К этому: DateADD(mi, -30, Current_TimeStamp)

Чтобы получить текущую дату, используйте GetDate ().

MSDN Ссылка на функцию DateAdd
Ссылка MSDN для функции получения даты

39 голосов
/ 17 декабря 2010

Посмотрите на использование DATEADD

что-то вроде

SELECT DATEADD(minute, -30, GETDATE())
5 голосов
/ 17 декабря 2010

Использование:

SELECT * 
FROM [Janus999DB].[dbo].[tblCustomerPlay] 
WHERE DatePlayed <  GetDate() 
AND DatePlayed > dateadd(minute, -30, GetDate())
1 голос
/ 19 января 2019

DATEADD только вернул Function does not exist на MySQL 5.5.53 (я знаю, что он старый)

Вместо этого я нашел DatePlayed > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 minute) для получения желаемого результата

1 голос
/ 17 декабря 2010

SQL Server использует юлианские даты, поэтому ваши 30 означают «30 календарных дней».getdate () - 0.02083 означает «30 минут назад».

0 голосов
/ 12 марта 2019

Помните, что CURRENT_TIMESTAMP - (число) работает нормально, но вам нужно понять, какое число оно ищет - это число с плавающей запятой. Таким образом, CURRENT_TIMESTAMP-1.0 - 1 день назад, CURRENT_TIMESTAMP-0.5 - 1/2 дня назад. В течение 30 минут это будет 1,0 / 48,0 (используйте основание, чтобы результат был числом с плавающей запятой) или 0,0208333333333333, поэтому ваш запрос будет работать, если переписать как

select * from
[Janus999DB].[dbo].[tblCustomerPlay]
where DatePlayed < CURRENT_TIMESTAMP
and DatePlayed >
CURRENT_TIMESTAMP-1.0/48.0

Вы также можете использовать 1.0 / 24.0 / 2.0, если для вас это больше похоже на полчаса.

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