MySQL форматирование даты - PullRequest
0 голосов
/ 08 июня 2011

У меня есть следующий MySQL.

    SELECT
        `outputtable`.`date`,
        count(*) as `count`
    FROM (
        SELECT
            CONCAT(DATE(`mytable`.`starttime`),' ',HOUR(`mytable`.`starttime`),':',LPAD(10*(MINUTE(`mytable`.`starttime`) DIV 10),2,'0')) as `date`,
            `mytable`.`clientid`
        FROM
            `mytable`
        WHERE
            `mytable`.`clientid`='1'
        GROUP BY
            `mytable`.`clientid`
        ORDER BY 
            `date`
        ) AS outputtable
    GROUP BY
        `date`
    ORDER BY
        `date` ASC

Выведенное поле даты неправильно упорядочено в соответствии с правилами упорядочения даты и времени.

Пример порядка вывода:

2011-02-01 17:00 | 4

2011-02-01 18:00 | 1

2011-02-01 19:00 | 1

2011-02-01 21:00 | 1

2011-02-01 8:00 | 6

2011-02-01 9:00 | 7

Я предполагаю, что это потому, что вновь созданное поле с именем 'date' является varchar.

Как установить тип «Datetime» для поля «date» в таблице «outputtable», чтобы он правильно упорядочивался?

Заранее спасибо,

H.

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Просто используйте Datetime в качестве типа столбца: D

1 голос
/ 08 июня 2011

Приведите его на сегодняшний день, как это:

cast(CONCAT(DATE(`mytable`.`starttime`),' ',HOUR(`mytable`.`starttime`),':',LPAD(10*(MINUTE(`mytable`.`starttime`) DIV 10),2,'0')) as DATE) as date

или более читабельно:

 SELECT
    cast(`outputtable`.`date` as date),
    count(*) as `count`
 -- the rest of the query the same
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...