4

日付の入力があります。形式はYYYY-MM-DDです。ただし、MMおよびDDはオプションです。以下のすべてが期待されるフォーマットを構成します。

  • 2012-10-13
  • 2012-09
  • 2010年

このデータをMySQLデータベースに保存する必要があります。これは、日付の表示と結果のフィルタリング(クエリ)の両方に使用されます。

それを行う方法は何ですか?

4

3 に答える 3

3

00で月/日を設定するだけです。DATETIME例えば:

2012-04-06
2012-04-00
2012-00-00

これらの例はすべて、DATETIME列で完全に有効です。実用的な証拠として、私たち(私が働いている会社)はこれを使用して、私たちのWebサイトの本の発行日を指定します。現在、MySQL5.1.54を使用しています。

注:日付のフォーマットに使用される言語(存在する場合)によっては、日/月が指定されているかどうかに応じて、異なるフォーマットが必要になる場合があります。たとえば、PHPでは、日が指定されているかどうかを確認し、最後の「-00」を「-01」に手動で変更してから、日付を適切にフォーマットする必要がありました(最終結果では日を省略します)。

マニュアルから(出典

これを追跡してくれた@jonに感謝します:

MySQLでは、日または月と日がゼロである日付をaDATEまたはDATETIMEに格納できます。これは、正確な日付がわからない可能性のある生年月日を保存する必要があるアプリケーションに非常に役立ちます。この場合、日付を「2009-00-00」または「2009-01-00」として保存するだけです。このような日付を保存する場合、完全な日付を必要とするDATE_SUB()やDATE_ADD()などの関数に対して正しい結果が得られると期待するべきではありません。日付の月または日のゼロ部分を禁止するには、NO_ZERO_IN_DATESQLモードを有効にします。

于 2012-04-06T13:30:11.860 に答える
1

年、月、日を別々の列に格納し、それらを組み合わせて表示することができます。一部のクエリでは、1年を検索するなど、それらを組み合わせる必要がない場合があります。

于 2012-04-06T13:22:04.557 に答える
0

mysqlのvarchar (10 ) NOT NULL列に保存

データを取得するときは、mysql関数STR_TO_DATE()またはDATE_FORMAT()

Reference

于 2012-04-06T13:13:45.510 に答える