以mysql日期格式计算日期后的“x”天[重复]
Posted
技术标签:
【中文标题】以mysql日期格式计算日期后的“x”天[重复]【英文标题】:Calculate 'x' days after a date in mysql date format [duplicate] 【发布时间】:2012-08-31 10:04:19 【问题描述】:例如,我想计算给定日期后的 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 天)