2013-07-08 73 views
0
SELECT DATEDIFF(dd, (SELECT date FROM player WHERE 
date = (SELECT MAX(date) FROM player WHERE name = 'Deuslegio') 
AND name = 'Deuslegio'), CURDATE()) 

基本上,我想要做的是獲取某個玩家名稱的最新行記錄日期 並從今天的日期獲得差異。這個SQL查詢語法是否正確?

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' CURDATE())' at line 1

+0

用MySQL允許選擇查詢沒有where子句 –

+1

我只是想指出的是您的第一個?嵌套查詢完全沒用,你說'select date where date = date'... Date結果將和傳入WHERE的日期一樣 –

+0

記住..'DATE'是一個mySQL保留關鍵字,你應該真的使用不同的字段名 – DevlshOne

回答

2

你在你的DATEDIFF功能使用三個參數:

1. dd 
2. (SELECT DATE FROM player WHERE DATE = (SELECT MAX(DATE) FROM player WHERE NAME = 'Deuslegio') AND NAME = 'Deuslegio') 
3. CURDATE() 

您只能使用兩個,而是根據phpMyAdmin的上GoDaddy的,我得到這個錯誤。

mySQL DATEDIFF()

+0

我以爲有三個? DATEDIFF(datepart,startdate,enddate) dd = day – Evan

+0

不,[MySQL中只有兩個參數](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions。 html#function_datediff)你在考慮MS Access的功能。 –

+0

我編輯了你的鏈接,指向官方的MySQL文檔而不是w3schools。 –

0

您可以簡化您的查詢了很多。這是您的查詢(如固定通過移除dd

SELECT DATEDIFF((SELECT date 
       FROM player 
       WHERE date = (SELECT MAX(date) FROM player WHERE name = 'Deuslegio' 
          ) AND name = 'Deuslegio' 
       ), CURDATE() 
       ) 

以下是等價的:

SELECT DATEDIFF((SELECT date 
       FROM player 
       WHERE name = 'Deuslegio' 
       order by date desc 
       limit 1 
       ), CURDATE() 
       )