2017-04-24 10 views
-1

どのように日付を調べることができますか? 私は、SQLASC DESCの方法どのデータ型がvarcharの日付か

 
2014-3-18 
2014-1-15 
2014-3-20 
2015-3-18 

にfolllowingしている私は、ffのコードを試してみましたが、それはちょうど私に私のDBでエラーが発生します。 はい、列のデータ型はvarcharです。 また、その列にNULL値があります。

 
SELECT * 
FROM `locate` 
ORDER BY 
    CONVERT(DateTime, `Date`,101) DESC 

助けてください。ありがとう! :)

+0

どのDBMSを使用しますか? – Jens

+0

エラーが発生した場合は、エラーメッセージも追加してください。 – Jens

+0

SQL構文にエラーがあります。 'Date'の近くで使用する正しい構文については、MariaDBサーバーのバージョンに対応するマニュアルをチェックしてください。101)DESC LIMIT 0,25'行目4 – MonPadi

答えて

1

mysqlを使用しているようですので、mssqlconvert機能を使用することはできません。私はEVENTDATEを推測しているdocumentation

+0

ありがとうございました!私はmssqlとmysqlの間にいくつかの基本が必要です。 – MonPadi

0

は、この方法で順番を使用します。

SELECT DATE_FORMAT(`date`, '%d-%m-%Y') as date_formatted 
FROM locate 
ORDER BY `datetime` DESC 

それが動作するかどうか私に教えてください。

+0

これはmysql上で動作しますか? - )) – marmeladze

+0

作者の作品がうまくいくかどうか聞いてみましょう。そうでない場合は、代替案を見つけることができます。 –

+0

ofcourseは動作しません - ))xamppはApache、mysql、php/perl/pythonのバンドルを使用しているためです。 – marmeladze

0

は、そうでない場合はORDER BY句は大丈夫だろうcharまたはvarchar型ではなく日付で参照詳細についてはSTR_TO_DATE

SELECT * 
FROM `locate` 
ORDER BY 
    STR_TO_DATE(`Date`,'%Y-%m-%d') DESC 

を使用する必要があります。あなたがこれまでにして並べ替えているとのこと

SELECT * 
FROM 
    vw_view 
ORDER BY 
    CONVERT(DateTime, EventDate,101) DESC 

問題で値を変更するCONVERTを使用することができます

EVENTDATEができない値を持つ場合スパーキーは、コメントで指摘するように、ありますクエリが実行されない日付に変換されます。

これは、あなたが悪いの行を除外したり、悪い行が

除外するために、悪い行がちょうどにWHERE IsDate関数(EVENTDATE)= 1

を追加した結果の底に行かせなければならないのいずれかを意味し悪い日があなたが使用する必要がある底に行くようにしましょうケース

ORDER BY 
    CASE 
     WHEN IsDate(EventDate) = 1 THEN CONVERT(DateTime, EventDate,101) 
     ELSE null 
    END DESC 
関連する問題