我使用一个函数返回存储的时间与当前时间之间的差值()
示例:
TIMESTAMPDIFF(DAY, NOW(), `stored_time`)如果我要在一个查询中使用返回值,如下所示:
SELECT `column1`, `column2` TIMESTAMPDIFF(DAY, NOW(), `stored_time`)
FROM `table`
WHERE TIMESTAMPDIFF(DAY, NOW(), `stored_time`) > 2有没有重用这个值的方法?我尝试过这样的东西:
SELECT `column1`, `column2` @timediff = TIMESTAMPDIFF(DAY, NOW(), `stored_time`)
FROM `table`
WHERE @timediff > 2但它不起作用。我对MySQL变量一无所知。我该如何解决这个问题?
发布于 2015-05-12 21:41:24
也许是像这样的
SELECT tt.`column1`, tt.`column2`, t.timediff
FROM `table` tt
LEFT JOIN (SELECT TIMESTAMPDIFF(DAY, NOW(), tt.`stored_time`) as timediff) t on 1=1
WHERE t.timediff > 2(这没有经过测试,但如果这就是您要找的,可能会让您走上正确的道路)
上面的方法显然不适用于MySQL (这是有道理的……我更倾向于使用APPLY/LATERAL JOIN风格的查询,这在MySQL中是不存在的)。因此,您可能想要尝试的另一件事是:
SELECT tt.`column1`, tt.`column2`, TIMESTAMPDIFF(DAY, t.dtnow, tt.`stored_time`)
FROM `table` tt
LEFT JOIN (SELECT NOW() as dtnow) t on 1=1
WHERE TIMESTAMPDIFF(DAY, t.dtnow, tt.`stored_time`) > 2发布于 2015-05-12 22:28:23
您可以使用变量为其分配函数值,但必须在WHERE子句中初始化该变量,然后在SELECT中使用它
SELECT `column1`, `column2`, @timediff
FROM `table`
WHERE (@timediff:= TIMESTAMPDIFF(DAY, `stored_time`, NOW())) > 2作为附注,如果您希望TIMESTAMPDIFF返回一个正值,那么您必须将最近的日期作为第三个参数传递。
https://stackoverflow.com/questions/30192600
复制相似问题