获取日期的复杂mysql查询

时间:2015-03-18 20:48:20

标签: php mysql join

我有四张桌子,如:

- accounts
1. id
2. register_date
3. package
4. status

- company
1. id
2. brand
3. account_id

- packages
1. id
2. title
3. experience ( for example that package's time is 30 day, it will expire after that and related account's status will be 0)

Example scenario:

accounts
------------
id=>1
register_date=>2015-01-27 23:36:38
package=>1
status=>1

company
------------
id=>1
brand=>Burger King
account_id=>1

packages
------------
id=>1
title=>Economic Package
experience=>30

现在,我只想查询谁的帐户将在10天后过期。 在我的小脑袋中,我想我会在帐户的注册日期中添加包的经验并从当前时间中减去它并检查它是否更小或等于10.我在单个查询中需要它但我的mysql知识是不够大,无法解决这个问题。谢谢你的每一个答案......

2 个答案:

答案 0 :(得分:1)

这是你要找的......

SELECT `accounts`.*
FROM `accounts`
    INNER JOIN `packages` ON `packages`.`id` = `accounts`.`package`
WHERE DATEDIFF(DATE_ADD(`accounts`.`register_date`,INTERVAL `packages`.`experience` DAY) ,NOW()) = 10

答案 1 :(得分:-1)

查询是否所有包都设置为30?或者它们中的一些较小并且已经低于10,如果是这样,那么你可以通过剩余的包活动时间来查询它们。