2013-07-08 72 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() 
       )