2016-09-18 2 views
0

Я пытаюсь получить список всех сессий, которые начнутся через 15 минут. Проблема связана с часовыми поясами клиентов и серверов и конверсиями. До сих пор этот код.Получить все сеансы за 15 минут до начала времени

Сервер MySQL находится на другой машине, а клиент (сервер nodejs) работает на другой машине.

sql = 'SELECT * FROM sessions 
WHERE FROM_UNIXTIME(?) BETWEEN SUBTIME(session.start, "0:15:0") AND session.start' 

values = [Math.round(Date.now()/1000)] // convert milliseconds to seconds 
+0

Предоставлено 'session.start' было установлено так же, как вы его запрашиваете, вы должны получить то, что вам нужно. Чтобы быть последовательным приложением, просто не следует использовать часы сервера Mysql. Нет '..set session.start = now()' или что-то. – Serg

ответ

0

Я ожидал что-то вроде этого:

select s.* 
from sessions s 
where s.start >= now() and s.start <= date_add(now(), interval 15 minute); 

Одна из причин, ваш запрос не работает, потому что between ожидает, что первое эталонное значение должно быть меньше второго.

+0

спасибо за запрос, вторая проблема в том, что mysql работает в другом часовом поясе, как заставить mysql работать в часовом поясе Miami или Califronia, он имеет какое-то отношение к строке соединения «timezone» –

+0

@iPhoneDeveloper. , , Это также зависит от того, как время хранилось в базе данных - с использованием местного времени или времени базы данных. –

+0

мы сохранили как локальное время в соответствии с точным временем сеанса, так и с помощью '" dateStrings ":" true "' настройка соединения для отображения клиента. то есть без преобразования –

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