sql在时间戳

时间:2019-07-10 11:22:37

标签: mysql sql

我想从数据库中提取ultima_modifica字段(TIMESTAMP)和ultima_modifica + attesa(枚举'1','3','5')之间的所有字段 enter image description here last_change是一个(时间戳

ultima_modifica是一个(ENUM)

SELECT * FROM `my_table` WHERE ultima_modifica between ultima_modifica and ultima_modifica + interval attesa minute 

这样,我将检索所有结果

目标是仅检索时间戳(ultima_modifica)和时间戳ultima_modifica +枚举(3)之间的数据

感谢帮助

2 个答案:

答案 0 :(得分:2)

尝试使用TIMESTAMPADD

SELECT *
FROM my_table
WHERE ultima_modifica BETWEEN ultima_modifica AND TIMESTAMPADD(MINUTE, attesa, ultima_modifica);

通过使用TIMESTAMPADD,我们可以解决使用INTERVAL所需的文字值的问题。该答案假定attesa是表中的一列,单位为分钟。

答案 1 :(得分:0)

这是您的过滤条件:

WHERE last_change between last_change and last_change  + interval wait_time minute 

嗯,有三种可能性:

  • 如果last_changewait_timeNULL,则不返回任何行。
  • 如果wait_time为负,则不返回任何行。
  • 否则,将返回所有行。

为什么?因为任何给定的时间总是会在该时间和未来几分钟之间的“时间”之间。

因此,您的意图完全不清楚。您的查询通常将返回所有行。并且总是要返回所有具有非NULL和非负值的行。