0

多くの行があるテーブルに3列あります。特定の行について、列の最後の値を取得する必要があるため、2013 年 11 月 10 日の最後の日付を取得する方法を教えてください。

uid       date         book_id
  1   18/8/2013          41
         to
      11/10/2013       
4

5 に答える 5

1

問題は、日付を日付としてではなく文字列として保存していることです。11/10/2013は有効な日付ではありません。DATE_FORMAT やその他の関数を使用しないと、適切に並べ替えることができません。これは、MySQL のネイティブの日付処理が優れていることを考えると、やり過ぎです。

また、2 つの日付を保存する場合は、2 つの列を使用します (たとえばdate_start、 とdate_end)。それらを 1 つに結合しないでください。

データをバックアップし、列のタイプを DATE または DATETIME に変更して使用しますORDER BY date_field DESC LIMIT 1

于 2013-09-23T11:32:04.020 に答える
1

最新の日付エントリが必要ですか? 降順 (最新の日付が最初) に並べ、結果セットを 1 に制限します。

SELECT date FROM table ORDER BY date DESC LIMIT 1 ;

1 つの日付フィールドに複数の日付があり、テキストも含まれていることを本当に意味している場合は、データベース スキーマを次のように変更する必要があります。

ユーザーID | 開始日 | 終了日 | ブックID

于 2013-09-23T11:23:04.100 に答える
0

これでうまくいくはずです。

SELECT * FROM table_name ORDER BY STR_TO_DATE(date,'%e/%c/%Y') DESC LIMIT 1;
--                                ^- the most recent date is first

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

于 2013-09-23T11:23:30.710 に答える
0

特定の book_id の最終日付が必要な場合は、次のように記述できます。

SELECT MAX(date) FROM myTable WHERE book_id = 41
于 2013-09-23T11:23:35.687 に答える
-1

それが、mysqlを使用してphpでこれを行う方法です

    $Query = mysql_query(SELECT date FROM table_name ORDER BY date DESC LIMIT 1);

    $Date = mysql_result($Query,0,'date');

    $Date = explode('to',$Date);
    $Last_Date = $Date[1];
于 2013-09-23T11:31:01.347 に答える