【发布时间】:2011-08-31 19:31:11
【问题描述】:
这就是全部内容:
SELECT * FROM sometable LIMIT 5*DATEDIFF(NOW(), '2011-08-30'), 5
错误:
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的 '*DATEDIFF(NOW(), '2011-08-30'), 5' 附近
问题显然是LIMIT 显然只接受整数。它也不接受 1+1 或 (1+1) 作为值。有办法解决吗?
为了让您不必去尝试,5*DATEDIFF(NOW(), '2011-08-30') 工作得很好。
我正在尝试修复this 答案..
【问题讨论】:
-
This question 如果您想在 SQL 中执行此操作,可能会对您有所帮助,但是 AFAIK,您无法使用 MySQL 在 LIMIT 子句中进行计算。
-
看起来确实没有办法绕过它,但还有其他事情可以做。例如,运行一个单独的查询以选择 datediff,将其保存为您使用的任何编程语言的变量,然后将其插入您上面的查询中。要么,要么您可以先通过其他方式计算 datediff(例如使用 php 日期函数)
-
甚至不能使用服务器端变量,所以
select @lim := datediff(...); select .... limit @lim,1也失败了。