2017-08-08 9 views
0

私はmysqlテーブルにカラムhiredateを持っています。私は時々私はhiredateの値を 'xxxx-xx-xx'または 'zzzz-zz-zz'とし、これらの値をデータベースに保存する必要があるため、この列のデータ型をvarcharとして選択する必要がありました。order by hiredate mysqlで期待通りに動作しないDESC

私の問題は、私は

select distinct 
    agentname 
from agentdata 
where hiredate not in ('xxxx-xx-xx','zzzz-zz-zz') 
order by hiredate desc 

句でクエリを実行すると、それは正しくソートされたデータを返していないことです。しかし、

select distinct 
    agentname, 
    hiredate 
from agentdata 
where hiredate not in ('xxxx-xx-xx','zzzz-zz-zz') 
order by hiredate desc 

句でクエリを実行すると、正しいソートデータが返されました。

違いはselect文のhiredateフィールドのみです。私はMysqlのこの動作の理由を知らない。

+0

あなたが私たちに示した2つのクエリは異なっており、同じ列を返さない。それらを比較することは、オレンジのIMOにややリンゴです。 –

+0

はい、これら2つは異なるため、結果セットを正しくソートするには、select句にカラム名を指定する必要がありますか? hiredateによってソートされたagentnameのみを必要とする場合はどうすればよいですか? str_to_date(hiredate、 '%Y-%m-%d')は私のために働いていませんでした。 – Devendra

答えて

1

日付と注文を日付順にキャストする必要があります。

ORDER BY str_to_date(hiredate, '%Y-%m-%d') 
+0

申し訳ありませんが、それは働いていませんでした:( – Devendra

関連する問題