-2

以下のようなテーブルがあります。私の目標は、すでに過去のものだけではなく、今後の日付である結果のみを返すことです。

id    |   date
1       Mar 12 2012 
2       Apr 17 2013
3       Oct 22 2014
4       Jul 12 2015

欲望の結果:

id    |   date
1       Oct 22 2014
2       Jul 12 2015

以下の行を実行しようとしましたが、結果はゼロです。

SELECT * FROM `table` WHERE NOW() < `date`

OR

SELECT * FROM `table` WHERE `date` > CURDATE() ;
4

5 に答える 5

1

まあ、少し率直に言って、あなたのデータはめちゃくちゃです:)

基本的に、その形式を使用して MySQL に日付を格納することはできません。その結果、列は (var)char になります。文字列を日時であるかのように並べ替えようとすると、問題が発生するだけでなく (ここに質問を投稿する必要があったために実際に発生しました)、クエリのパフォーマンスが低下します。

に変更することを絶対に再検討する必要がありdatetimeます。

于 2013-10-11T05:14:55.487 に答える
0

関数を使用DATE_FORMATして文字列の日付を比較します。

SELECT * FROM `table` WHERE DATE_FORMAT(`date`, "%M %d %Y") > CURDATE() ;
于 2013-10-11T05:24:51.140 に答える
0

CURDATE() の関数定義は、数字の文字列を返します。コンテキストに応じて、'2008-06-13' または '20080613' が返されます。これは、文字列を除いて「2014 年 10 月 22 日」と比較することはできません。

「日付」フィールドの形式を機械で読み取り可能な日付に変更できる場合 ( MYSQL の日付と時刻に関するドキュメントを参照)、おそらく比較作業を行うことができます。

于 2013-10-11T05:17:21.807 に答える
0

これは、目的の結果に対する適切なクエリです。データベースの日付列のデータ型を確認してください。日付または日時である必要があります。

SELECT * FROM `tablename` WHERE `date` > CURDATE( );
于 2013-10-11T05:29:56.647 に答える