非標準の日付をデータベースに保存するシステムを作成しました。ユーザーが作成するすべての投稿について、日付はこの形式で保存されます。月日、年、つまり2012年9月15日。MySQLにはこのデータを整理する方法がないと思うので、手動で整理する必要があります。
私はこれを行う方法を思い付くことができませんでした。
助けてください、ありがとう。
あなたが持っているものを分類することは非常に難しいでしょう。月が最初ですが、それはアルファであり、そのように並べ替えることはできません。日は2番目で、年は最後です。
DATETIME
MySQLまたはTIMESTAMP
フィールドタイプを使用する方がはるかに良いでしょう。少なくとも、UNIXタイムスタンプを使用して保存し、INT(10)
数値でソートすることができます。
私は何年もUNIXタイムスタンプアプローチを使用してきましたがTIMESTAMP
、MySQLのネイティブ日付形式でさらに多くのことができるため、ゆっくりと切り替えています。追加のボーナスとして、FROM_UNIXTIME(field)を常に記述しなくても、phpMyAdminで日付を実際に確認して理解することができます。接続を確立するときに、操作しているタイムゾーンをMySQLに通知する必要があります(を使用している場合TIMESTAMP
)。
strtotimeを使用して、持っているものを簡単に変換できるはずです。FALSE
それが理解できない場合、それは戻ります。これがどれだけスムーズに進むかは、日付のサニタイズを行ったかどうかによって異なります。そうでない場合は、preg_replaceを使用してクリーンアップを実行できる可能性があります。
データベース内のデータを変換した後、PHPの日付関数またはMySQLのDATE_FORMATを使用してデータを希望どおりに表示できます。
何をするにしても、PHPでソートすることは避けてください。データベースに可能な限り多くのソートとフェッチを実行させます。
データベースにchar(12)フィールドを作成し、この形式でデータを格納しますYYMMDD
フォア例 2012年9月15日を保存するには、 20120915に変換する必要があります
このアプローチを使用すると、並べ替え、再フォーマット、または再変換できます。