врезаться в "неизвестное поле таблицы", но оно определено - PullRequest
0 голосов
/ 24 марта 2019

выполнение запроса и преобразование сохраненной метки времени unix в определенный формат даты. это я хочу сравнить с отметкой времени сегодня ...

Я выполняю условие where, в котором ошибка "D" неизвестна?

SELECT 
    COUNT(distinct db_suid), 
    date_format(from_unixtime(d_utime),'%H') AS H,
    date_format(from_unixtime(d_utime),'%Y-%m-%d') AS D
FROM air_vault 
WHERE CURRENT_DATE = D
GROUP BY H

в конце я хочу получить различное количество значений в час сегодня

Ответы [ 3 ]

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

Я бы предложил сделать:

SELECT COUNT(distinct db_suid), 
       date_format(from_unixtime(d_utime),'%H') AS H,
       date_format(from_unixtime(d_utime),'%Y-%m-%d') AS D
FROM air_vault av
WHERE d_utime >= unix_timestamp(curdate()) and
      d_utime < unix_timetamp(curdate() + interval 1 day)
GROUP BY H, D;

Почему логика так сформулирована? Условия в предложении where могут использовать индекс на d_utime, если он доступен, или разделы, если данные разбиты на этот столбец. Это может значительно повысить производительность запроса.

Когда столбец является аргументом функции (например, from_unixtime()), индексы почти никогда не используются.

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

справился с моей проблемой, изменив условие WHERE:

WHERE CURRENT_DATE = date_format (from_unixtime (d_utime), '% Y-% m-% d')

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

Вы не можете использовать псевдоним, определенный в select, также в предложении where

SELECT 
    COUNT(distinct db_suid), 
    date_format(from_unixtime(d_utime),'%H') AS H,
    date_format(from_unixtime(d_utime),'%Y-%m-%d') AS D
FROM air_vault 
WHERE CURRENT_DATE = date_format(from_unixtime(d_utime),'%Y-%m-%d')
GROUP BY H
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...