1

非標準の日付をデータベースに保存するシステムを作成しました。ユーザーが作成するすべての投稿について、日付はこの形式で保存されます。月日、年、つまり2012年9月15日。MySQLにはこのデータを整理する方法がないと思うので、手動で整理する必要があります。

私はこれを行う方法を思い付くことができませんでした。

助けてください、ありがとう。

4

2 に答える 2

2

あなたが持っているものを分類することは非常に難しいでしょう。月が最初ですが、それはアルファであり、そのように並べ替えることはできません。日は2番目で、年は最後です。

DATETIMEMySQLまたはTIMESTAMPフィールドタイプを使用する方がはるかに良いでしょう。少なくとも、UNIXタイムスタンプを使用して保存し、INT(10)数値でソートすることができます。

私は何年もUNIXタイムスタンプアプローチを使用してきましたがTIMESTAMP、MySQLのネイティブ日付形式でさらに多くのことができるため、ゆっくりと切り替えています。追加のボーナスとして、FROM_UNIXTIME(field)を常に記述しなくても、phpMyAdminで日付を実際に確認して理解することができます。接続を確立するときに、操作しているタイムゾーンをMySQLに通知する必要があります(を使用している場合TIMESTAMP)。

strtotimeを使用して、持っているものを簡単に変換できるはずです。FALSEそれが理解できない場合、それは戻ります。これがどれだけスムーズに進むかは、日付のサニタイズを行ったかどうかによって異なります。そうでない場合は、preg_replaceを使用してクリーンアップを実行できる可能性があります。

データベース内のデータを変換した後、PHPの日付関数またはMySQLのDATE_FORMATを使用してデータを希望どおりに表示できます。

何をするにしても、PHPでソートすることは避けてください。データベースに可能な限り多くのソートとフェッチを実行させます。

于 2012-09-15T22:22:49.687 に答える
-2

データベースにchar(12)フィールドを作成し、この形式でデータを格納しますYYMMDD

フォア例 2012年9月15日を保存するには、 20120915に変換する必要があります

このアプローチを使用すると、並べ替え、再フォーマット、または再変換できます。

于 2012-09-15T22:36:39.567 に答える