有人可以帮我吗?
服务器版本: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
答案 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)
但又一次,不确定你在这里尝试了什么...