2014-01-30 25 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