【问题标题】:Add day to empty database time将天添加到空数据库时间
【发布时间】:2021-10-17 13:25:44
【问题描述】:

我有这个代码

$Date = $db_date;
$ss = date('Y-m-d', strtotime($Date. ' + 1 days'));

$x = $con->prepare("UPDATE ssss SET ss=? WHERE sss=?");
$x->bind_param("ss", $ss, $sss);
$x->execute();

如果当前数据库时间不为空,例如 2021-10-17,则代码将 + 1 天添加到当前数据库时间,因此它将是 2021-10-18。但是,如果数据库时间为空 (0000-00-00),它什么也不做。如果数据库时间为空,我想在当天添加 +1 天。

【问题讨论】:

  • DATEADD(Day, 1, ss) 它将增加一天 .UPDATE ssss SET ss=DATEADD(Day, 1, ss) WHERE sss=?
  • 为什么 dbdate 永远是空的?你如何填充它?不能只用一个if语句来检查吗??
  • 0000-00-00 不是有效日期。请在您的数据库中更正此日期。如果不应该有日期,请使用 NULL

标签: php mysql sql


【解决方案1】:

当日期全为零时,now 可以在 strtotime 调用中用作当前日期:

$Date = $db_date;

if ($Date == '0000-00-00') {
    $ss = date('Y-m-d', strtotime('now + 1 days'));
} else {
    $ss = date('Y-m-d', strtotime($Date. ' + 1 days'));
}

参见this fiddle 示例,日期设置为0000-00-00。

【讨论】:

    【解决方案2】:

    您可以使用简单的 SQL 查询来做到这一点:

    UPDATE test SET sss = DATE_ADD(IFNULL(sss, CURDATE()), INTERVAL 1 DAY);
    

    Test it on SQL fiddle

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      相关资源
      最近更新 更多