mysql日期时间范围选择

pla*_*t x 3 mysql cron datetime

我在系统中有定期付款模式.一切都很好,API成功响应记录在数据库中.我的问题是,我即将自动化系统的后续付款操作(不幸的是,支付网关不支持).通过cron,我将安排检查后续流程和通知中是否必须包含哪些帐户.我这里有一个数据库条目的片段:

+---------------------+---------------------+--------------------+
| payment_date        | payment_expirydate  | transaction_number |
+---------------------+---------------------+--------------------+
| 2012-02-14 03:47:15 | 2012-05-14 03:47:15 | 1-67815163         |
| 2012-02-16 00:53:03 | 2012-05-16 00:53:03 | 1-69010235         |
| 2012-02-16 08:57:16 | 2012-05-16 08:57:16 | 1-69027483         |
| 2012-02-16 09:08:06 | 2012-05-16 09:08:06 | 1-69027694         |
| 2012-02-16 09:58:17 | 2012-05-16 09:58:17 | 1-69028921         |
| 2012-02-17 09:28:32 | 2012-05-17 09:28:32 | 1-69072076         |
| 2012-02-17 06:17:45 | 2012-05-17 06:17:45 | 1-69068200         |
| 2012-02-17 11:12:08 | 2012-05-17 11:12:08 | 1-69074788         |
+---------------------+---------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)

我在为此创建SQL查询时遇到了困难.假设今天的日期是2012-05-16,时间是07:00:00.我希望得到今天所有的帐户,而不是当前的时间.例如,我需要的唯一有效帐户(基于我指示的当前日期和时间)是帐号1-69010235.

另外,如果在什么时间间隔我应该设置我的cron运行的任何提示?

nni*_*ols 6

此查询将返回今天到期的所有记录 -

SELECT *
FROM accounts
WHERE payment_expirydate BETWEEN CURRENT_DATE AND (CURRENT_DATE + INTERVAL 1 DAY - INTERVAL 1 SECOND)
Run Code Online (Sandbox Code Playgroud)

如果您希望所有帐户今天到期但低于当前时间 -

SELECT *
FROM accounts
WHERE payment_expirydate BETWEEN CURRENT_DATE AND CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

对于codeigniter的AR实现,您应该能够使用 -

$this->db->where('payment_expirydate BETWEEN CURRENT_DATE AND CURRENT_TIMESTAMP', NULL, FALSE);
Run Code Online (Sandbox Code Playgroud)