2014-11-02 2 views
0

* Я редактировал этот пост (проблема с '% d% M% Y% H:..% I:% s' был похож на половину)MySql дата-строка ORDER

Тем не менее, я не понимаю:/
Это работает отлично, и выбрав в правом «убывание» заказ:

SELECT monitor.data_activity FROM monitor, player WHERE monitor.player_id = player.id AND monitor.player_id = 1 
     AND (STR_TO_DATE(monitor.data_activity, '%d.%m.%Y') BETWEEN '2014-10-31' AND '2014-11-01') 
     ORDER BY UNIX_TIMESTAMP(STR_TO_DATE(monitor.data_activity, '%d.%m.%Y %h:%i:%s')) DESC; 

Но если я изменяю (и monitor.player_id = 1) до (и monitor.cord = «1 : 1: 1 '), где шнур является varchar10

SELECT monitor.data_activity FROM monitor, player WHERE monitor.player_id = player.id AND monitor.cord = '1:1:1' 
     AND (STR_TO_DATE(monitor.data_activity, '%d.%m.%Y') BETWEEN '2014-10-31' AND '2014-11-01') 
     ORDER BY UNIX_TIMESTAMP(STR_TO_DATE(monitor.data_activity, '%d.%m.%Y %h:%i:%s')) DESC; 

И он прерывается s мой ORDER BY:

31.10.2014 20:35:27 
01.11.2014 18:20:01 
31.10.2014 00:55:43 
31.10.2014 14:41:17 
31.10.2014 21:07:24  
01.11.2014 19:05:10  
+1

В чем проблема? – TomTom

ответ

1

Это совпадение. Оба выражения order by заказывают только по дате. В одном случае, это также означает, что время в правильном порядке. Вы можете использовать только:

order by STR_TO_DATE(monitor.data_activity, '%d.%m.%Y %H:%i:%s') 
+0

Спасибо. Это работает! Мой плохой, что я пытался с форматом «% H:% I:% S» вместо вашего «% h:% i:% s». – IgorZ

+0

@Igor. , , Это должно быть капиталом «H», а не «h». И ваш формат должен сработать. –

+0

Любые другие идеи об этом (мой новый 1-й пост)? – IgorZ