【问题标题】:Update database record after 30 (month) day30(月)日后更新数据库记录
【发布时间】:2020-01-20 14:14:02
【问题描述】:

我有一个提交列表,每个都有它的 date_added,我每天都在运行 cron 并检查 date_added 是否 >= 30 天。

我每天都在寻找正确的日期检查 (cron),所以如果 date_added >= 30 天,一定会发生一些事情。

日期格式:2019-12-14 08:38:09

我的代码:

$afterMonth = date("Y-m-d H:i:s", strtotime("+1 months"));

查询比较:

$query->where($db->quoteName('last_updated') . ' >= ' . $db->quote($afterMonth));

我只是在测试 = 或者它是否正常运行。

请给我更好的代码,因为我不擅长 php。

【问题讨论】:

  • 我不熟悉 joomla 但如果我正确阅读了您的代码,看起来您的查询将始终返回 0 行,因为您的 $afterMonth 设置为未来并且没有提交列表last_updated 会大于它。因此,有没有办法在执行查询时找到 now$last_updated 之间的日期差异,然后根据该日期/时间的必要参数进行选择 difference.

标签: php mysql joomla cron


【解决方案1】:

将日期逻辑放在 SQL 中,你不需要这一行:

$afterMonth = date("Y-m-d H:i:s", strtotime("+1 months"));

更改您的 where 子句:

$query->where($db->quoteName('last_updated') . ' >= DATE_SUB(CURDATE(), INTERVAL 30 DAY');

我们使用DATE_SUB() SQL 函数从给定日期减去时间跨度。我们使用CURDATE() 获取当前日期,然后使用INTERVAL 30 DAY 设置要减去的时间跨度。

你也可以使用:

$query->where($db->quoteName('last_updated') . ' >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)');

更多关于这个功能here

【讨论】:

  • 但语法不起作用,因为我们可能使用 Joomla 查询。所以需要办法找到
  • @Gocha 你是对的,我的答案缺少结束 ) - 请尝试更新的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2018-05-31
  • 2018-10-24
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
相关资源
最近更新 更多