多くの行があるテーブルに3列あります。特定の行について、列の最後の値を取得する必要があるため、2013 年 11 月 10 日の最後の日付を取得する方法を教えてください。
uid date book_id
1 18/8/2013 41
to
11/10/2013
問題は、日付を日付としてではなく文字列として保存していることです。11/10/2013
は有効な日付ではありません。DATE_FORMAT やその他の関数を使用しないと、適切に並べ替えることができません。これは、MySQL のネイティブの日付処理が優れていることを考えると、やり過ぎです。
また、2 つの日付を保存する場合は、2 つの列を使用します (たとえばdate_start
、 とdate_end
)。それらを 1 つに結合しないでください。
データをバックアップし、列のタイプを DATE または DATETIME に変更して使用しますORDER BY date_field DESC LIMIT 1
。
最新の日付エントリが必要ですか? 降順 (最新の日付が最初) に並べ、結果セットを 1 に制限します。
SELECT date FROM table ORDER BY date DESC LIMIT 1 ;
1 つの日付フィールドに複数の日付があり、テキストも含まれていることを本当に意味している場合は、データベース スキーマを次のように変更する必要があります。
ユーザーID | 開始日 | 終了日 | ブックID
これでうまくいくはずです。
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
特定の book_id の最終日付が必要な場合は、次のように記述できます。
SELECT MAX(date) FROM myTable WHERE book_id = 41
それが、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];