在mysql中使用变量进行查询

时间:2014-01-30 18:49:42

标签: mysql

有人可以帮我吗?

服务器版本: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

2 个答案:

答案 0 :(得分: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 ) 

<强>语法

答案 1 :(得分:1)

嗯,你在DAY区域遇到语法错误......所以它应该与那个普通附近的东西有关。

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

原因是您正在使用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)

但又一次,不确定你在这里尝试了什么...