2013-08-31 25 views
-2

我有这种有点复杂的查询,在this question中有很好的解释。我并没有改变在查询或与本系统中的任何东西,但我突然开始收到此错误MySQL确实意外的错误。 BIGINT超出范围

BIGINT UNSIGNED值超出范围 “(_dbadsimpressions_total - (投(( (CURDATE()) - 投(。_dbadsstart如日期))作为无符号)* _dbadsimpressions_perday))”

我真的很困惑,我想的东西是不是C疼,但我能做什么?我真的需要帮助..

+1

你需要做的就是去了解[MySQL的整数范围]什么(http://dev.mysql.com/doc/refman/5.0/en/integer-types.html)或做一些研究,而不是懒洋洋地在这里发布这个问题 – Bojangles

+0

@Bojangles但我没有在任何地方使用bigint? –

+0

是的,你是。 'CAST(... AS无符号)' – JJJ

回答

1

这似乎是你的

(_db.ads.impressions_total - (cast(((curdate()) - cast(_db.ads.start as date)) as unsigned) * _db.ads.impressions_perday 

正确的方式来获得两个日期之间的区别是使用datediff()。所以我不知道这是否会解决您的问题:

_db.ads.impressions_total - datediff(curdate(), cast(_db.ads.start as date))*_db.ads.impressions_per_day 
+0

不仅解决了我的问题,而且我相信简化了很多查询! –