2013-09-23 24 views

回答

0

如果你想爲一個給定的book_id的最後日期,你可以寫類似

SELECT MAX(date) FROM myTable WHERE book_id = 41 
+0

我不確定這是你需要的......我首先明白你在你的表中有幾行,包含'book_id = 41'的一些日期。後來我明白了,對於這個特定的行,「日期」字段具有「2013年8月8日至2013年11月10日」。如果我的第二個假設是好的,那麼我的建議是不正確的。 – MTranchant

1

你想要最新的日期條目嗎?定購降序(最新日期在前)和限制結果集爲1

SELECT date FROM table ORDER BY date DESC LIMIT 1 ; 

如果你真正的意思是你在一個日期字段,甚至文本也得到了幾個日期,那麼你需要改變你的數據庫架構類似於:

uid | startDate | endDate |書號

+0

這不會解決海報的問題。 – Sherlock

+0

那麼海報的問題是什麼? – markus

+0

他所指的'約會'是'2013年8月8日至2013年11月10日'。 – Sherlock

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

+0

你給的查詢正在工作,但它的概率是返回數據30/09/2013,但最後的值是11/10/2013 @alasjo – gokul

+0

編輯我的答案,以更好地適合您的日期格式。但是,從長遠來看,@sherlock爲您提供了更好的解決方案。 – Alasjo

+0

謝謝你的回答仍然只顯示01/10/2013。但ans是$ end_date是從數據庫獲取日期。 $ date_frag = explode(「 - 」,$ end_date); $ rev_date = $ date_frag [2]。「 - 」。$ date_frag [1]。「 - 」。$ date_frag [0]; 當我扭轉它開始採取從年,月和日期現在顯示爲11/10/2013 – gokul

-1

這就是你將如何在PHP中使用MySQL的

$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]; 
做到這一點
+0

我希望我會知道爲什麼有人投下了這個答案,因爲代碼是肯定工作 – user2801966

+0

感謝您的所有答案。 答案是 $ end_date是從數據庫中獲取日期。 $ date_frag = explode(「 - 」,$ end_date); $ rev_date = $ date_frag [2]。「 - 」。$ date_frag [1]。「 - 」。$ date_frag [0]; 當我扭轉它開始採取從年,月和在最後的日期。 – gokul

1

問題是,您將日期存儲爲字符串,而不是日期。 11/10/2013不是有效的日期,如果不使用DATE_FORMAT或其他功能,您將無法正確排序。鑑於MySQL對日期的良好本機處理,這太過分了。另外,如果要存儲2個日期,請使用2列(例如,date_startdate_end)。切勿將它們合併爲1.

備份您的數據,將列的類型更改爲DATE或DATETIME並使用ORDER BY date_field DESC LIMIT 1

相關問題