2014-01-30 22 views
0

任何人都可以帮我解决这个问题吗?使用mysql中的变量进行查询

Server版本:5.5.34-0ubuntu0.12.04.1

mysql> SET @MY_CURRENT_DATE = CAST(CONCAT(CURDATE(), ' 00:00:00') AS DATETIME); 
Query OK, 0 rows affected (0.00 sec) 

mysql> SET @MY_WEEKDAY = WEEKDAY(NOW()); 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT DATE_SUB(@MY_CURRENT_DATE, INTERVAL @MY_WEEKDAY + 14 DAY), DATE_SUB(@MY_WEEKDAY + 8 DAY); 
ERROR 1064 (42000): 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 'DAY)' at line 1 

回答

3

你有错误地使用了Date_sub函数。它需要date值作为第一个参数,其中输入int(工作日)值和输入参数数量不足。因此是错误。

-- this is wrong 
DATE_SUB(@MY_WEEKDAY + 8 DAY) 

-- this is right 
DATE_SUB(@MY_CURRENT_DATE, INTERVAL @MY_WEEKDAY + 14 DAY) 

-- this is corrected to be right 
DATE_SUB(@MY_CURRENT_DATE, INTERVAL @MY_WEEKDAY + 8 DAY) 

语法

+0

感谢您的回复,现在正在工作: 'SELECT DATE_SUB(@MY_CURRENT_DATE,INTERVAL @MY_WEEKDAY + 14 DAY),DATE_SUB(@MY_CURRENT_DATE,INTERVAL @MY_WEEKDAY + 8 DAY);' – Robert

+0

罗伯特。 – Hituptony

1

嘛,你要对天区......一个语法错误,所以它应该有在一般的事做附近。

看看你正在尝试做什么,以及你正在使用什么功能。我可以这样说:

它的原因是您使用的是DATE_SUB并试图添加...为什么不使用DATE_ADD加上您错过了第二个聚合的INTERVAL部分。忘记单词,不恰当地使用函数会导致MySQL不知道你想要做什么。第一个agg使用适当的语法,第二个不使用。但也应该大致如下:

mysql> SELECT DATE_ADD(@MY_CURRENT_DATE, INTERVAL (@MY_WEEKDAY + 14 DAY)), ____________; 

这将更有可能是这样的:

DATE_SUB(@MY_WEEKDAY, INTERVAL 8 DAY) 

但同样,不知道你想什么在这里...

+0

感谢你的帮助,但不幸的是,这仍然无法 'SELECT DATE_ADD(@MY_CURRENT_DATE,间隔(@MY_WEEKDAY + 14 DAY)),DATE_ADD(@MY_WEEKDAY,间隔+ 8天); 错误1064(42000):您的SQL语法错误;请检查与您的MySQL服务器版本相对应的手册,以便在第1行'DATE)),DATE_ADD(@MY_WEEKDAY,INTERVAL + 8 DAY)'处使用正确的语法' – Robert