所以这就是整个事情:
SELECT * FROM sometable LIMIT 5*DATEDIFF(NOW(), '2011-08-30'), 5
错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'* DATEDIFF(NOW(),'2011-08-30'),5'在第1行
问题显然是LIMIT
显然不接受任何除整数之外的任何东西。它也不会接受1+1
或(1+1)
作为值。有办法解决吗?
只是你不必去尝试,5*DATEDIFF(NOW(), '2011-08-30')
工作得很好。
我正在尝试修复this回答..
答案 0 :(得分:2)
NO ,在普通的mysql中是不可行的 (但是,可以通过存储过程,用户定义的函数)
你的情况,它可以通过PHP调用轻松替换
$offset = 5*
date_diff(new DateTime('now'), new DateTime('2011-08-31'))->format('%a');
$sql = "SELECT * FROM sometable LIMIT {$offset},5";
答案 1 :(得分:1)
限制必须是整数或局部变量。来自MySQL docs:
LIMIT子句可用于约束返回的行数 通过SELECT语句。 LIMIT需要一个或两个数字参数, 这些必须都是非负整数常数 例外:
在预准备语句中,可以使用指定LIMIT参数 ?占位符标记。
在存储的程序中,LIMIT参数可以使用整数值例程参数或MySQL中的局部变量来指定 5.5.6。