以mysql日期格式计算日期后的“x”天[重复]

Posted

技术标签:

【中文标题】以mysql日期格式计算日期后的“x”天[重复]【英文标题】:Calculate 'x' days after a date in mysql date format [duplicate] 【发布时间】:2012-08-31 10:04:19 【问题描述】:

可能重复:Format mysql datetime with php

例如,我想计算给定日期后的 10 天,使用 strtotime 以“Ymd”格式很容易,但在我的情况下,我正在从 mysql 中读取给定日期,该日期位于“Ymd H:i :s" 格式,现在 strtotime 似乎不适用于此类日期格式。

如何以“Y-m-d H:i:s”格式计算给定日期后 10 天?

提前谢谢你, 贝扎德

【问题讨论】:

看看DateTime 这不是所引用问题的不是重复,它只谈论格式,这是关于数学的。这种不准确的节制正在慢慢消除 SO 的所有乐趣 【参考方案1】:

使用DateTime修改日期增加10天:

$date = DateTime::createFromFormat( 'Y-m-d H:i:s', $string);
$date->modify( '+10 days');
echo $date->format( 'Y-m-d H:i:s');

【讨论】:

+1,很好的答案正是在数据库中做数学不可行的情况下我会做什么。【参考方案2】:

或者;在它进入 php 之前在 mysql 中执行它:

SELECT DATE_ADD(`date_column`, INTERVAL 10 DAY);

【讨论】:

我认为用 PHP 处理它更好。如果您还需要原始日期列怎么办?现在您需要传回附加列。如果还需要计算 5 天怎么办?又是另一列.. 那些是原始问题未涵盖的假设,通常(根据我的经验)当人们问这些事情时,这是因为他们不知道他们可以在数据库中做到这一点。如果,特别是如果您需要对多行执行此操作,它几乎肯定会在 mysql 中更快。但当然,如果情况是在 php 中做这件事更有意义,那就去吧。 没错,但您可能确实需要原始日期值。我想您的答案更多的是“不要在 php 中执行”,并且听起来像是在 php 中执行它是一件坏事,而不是作为替代解决方案。 在列上进行数学运算并不能阻止选择原始内容,但是我同意我使用的措辞可能会出错,因此我将答案文本修改为希望更合适的内容。

以上是关于以mysql日期格式计算日期后的“x”天[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 MySql DB 的 Spring Boot JPA - 映射日期以错误的日期结束(休息 1 天)

在 SQL Server 2008 中计算到期日期

php将日期格式转换为mysql格式以进行插入[重复]

如何将日期字符串转换为 mysql 日期格式以使用 mysql 查询计算日期差异

php 计算两个日期相隔多少年,多少月,多少天

excel中如何计算出 两个日期之间相差是多少年、月、日? 日期的格式是:2011-9-7。