【发布时间】:2015-03-27 14:27:53
【问题描述】:
我有一个大表(>30M 行),其中包含有关某种交易的信息。一栏是交易的完整日期,一栏是用户的出生年份。
这些列是:
trans_date 类型为 DATETIME(例如:2006-02-20 00:00:00)
birth 类型为 YEAR(ex: 1970)
我想要的是能够在 where 子句中计算交易人的年龄。例如,2006 - 1970 = 36。所以 1970 年出生的人在交易当年是 36 岁。
这就是我想做的(伪代码):
SELECT name FROM table WHERE (YEAR(trans_date) - birth) = '36'
这样我就可以获得交易当年该人 36 岁的所有记录。这可能吗?
【问题讨论】:
-
您的查询没有按原样工作吗?
-
看起来应该可以了。你试过运行它吗?
-
是的。它不起作用。我得到“BIGINT UNSIGNED 值超出范围'(年(
myDB.myTable.trans_date)-myDB.myTable.birth)'”