SQL - НЕОБХОДИМО, КАК ОНЛАЙН, ОФЛАЙН СТАТУС ОТ ДАННЫХ - PullRequest
0 голосов
/ 04 июля 2018

У меня есть один столбец с DateTime, и мне нужно состояние каждого сайта с помощью запроса выбора SQL, как я пытался из запроса ниже. при выполнении запроса появляется ошибка - «TIMESTAMPDIFF» не является распознанным именем встроенной функции. »

SELECT co.controllerid,
   co.controllerno,
   co.ControllerName,
   co.SerialNo,
   co.MACAddress,
   c.HBLatestDateTime,
   c.TrnxLatestDateTime,
   'STATUS' AS STAT,
   CASE
        WHEN TIMESTAMPDIFF(MINUTE, c.HBLatestDateTime, GETDATE()) <= 5 THEN 'online'
        WHEN (TIMESTAMPDIFF(MINUTE, c.HBLatestDateTime, GETDATE()) > 720
          AND TIMESTAMPDIFF(MINUTE, c.HBLatestDateTime, GETDATE()) <= 30) THEN 'idle'
        ELSE 'offline'
   END AS user_status
FROM Controllers AS co
     INNER JOIN Controllersruntime AS c ON c.ControllerID = co.ControllerID
                                       AND co.Markdeleted != 1
WHERE HBLatestDateTime = CONVERT(date, GETDATE())
ORDER BY co.ControllerName ASC;

1 Ответ

0 голосов
/ 04 июля 2018

TIMESTAMPDIFF - это функция в MySql, я думаю, что вы хотите использовать DATEDIFF

SELECT co.controllerid,
   co.controllerno,
   co.ControllerName,
   co.SerialNo,
   co.MACAddress,
   c.HBLatestDateTime,
   c.TrnxLatestDateTime,
   'STATUS' AS STAT,
   CASE
        WHEN DATEDIFF(MINUTE, c.HBLatestDateTime, GETDATE()) <= 5 THEN 'online'
        WHEN (DATEDIFF(MINUTE, c.HBLatestDateTime, GETDATE()) > 720
          AND DATEDIFF(MINUTE, c.HBLatestDateTime, GETDATE()) <= 30) THEN 'idle'
        ELSE 'offline'
   END AS user_status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...