MySQL:如何在查询中向日期时间字段添加一天

Posted

技术标签:

【中文标题】MySQL:如何在查询中向日期时间字段添加一天【英文标题】:MySQL: How to add one day to datetime field in query 【发布时间】:2011-02-18 03:00:39 【问题描述】:

在我的表中,我有一个名为 eventdate 的字段,格式为 datetime,例如 2010-05-11 00:00:00

我如何进行查询,以便将 一天 添加到 eventdate,例如,如果今天是 2010-05-11,我想在 where 子句中显示以返回明天的所有记录日期。

更新:

我试过了:

select * from fab_scheduler where custid = 1334666058 and DATE_ADD(eventdate, INTERVAL 1 DAY)

但不幸的是,即使我添加大于 1 的间隔,它也会返回相同的记录。

结果:

2010-05-12 00:00:00

但我只想选择明天日期的记录。

【问题讨论】:

【参考方案1】:

你可以使用DATE_ADD()函数:

... WHERE DATE(DATE_ADD(eventdate, INTERVAL -1 DAY)) = CURRENT_DATE

也可以用在SELECT语句中:

SELECT DATE_ADD('2010-05-11', INTERVAL 1 DAY) AS Tomorrow;
+------------+
| Tomorrow   |
+------------+
| 2010-05-12 |
+------------+
1 row in set (0.00 sec)

【讨论】:

@phpBOY:我认为你错过了 `= CURRENT_DATE` 部分。 我试过这个select * from fab_scheduler where custid = 1334666058 and DATE(DATE_ADD(eventdate, INTERVAL 1 DAY)) = CURRENT_DATE 但现在它返回空结果集:( 我个人会使用 CURDATE() @phpBOY:你是对的。您必须使用-1 来匹配CURRENT_DATE。尝试使用更新后的查询。 @Daniel Vassallo:请您构建查询,我得到的是空记录集。谢谢【参考方案2】:

可以使用 mysql 特定的语法糖:

SELECT ... date_field + INTERVAL 1 DAY

看起来比 DATE_ADD 函数更漂亮

【讨论】:

【参考方案3】:

试试这个,因为我会这样做:)

SELECT * 
FROM fab_scheduler
WHERE custid = '123456'
AND CURDATE() = DATE(DATE_ADD(eventdate, INTERVAL 1 DAY))

【讨论】:

我认为这行不通。 eventdate 永远不会等于 eventdate + 1 day。我想你打算在那里使用CURDATE()【参考方案4】:

如果您能够使用 NOW(),这将是最简单的形式:

SELECT * FROM `fab_scheduler` WHERE eventdate>=(NOW() - INTERVAL 1 DAY)) AND eventdate<NOW() ORDER BY eventdate DESC;

使用 MySQL 5.6+ 查询应该可以。根据 sql server,您可能需要使用 CURRDATE() 而不是 NOW() - 这是 DATE(NOW()) 的别名,将仅返回 datetime 数据类型的日期部分;

【讨论】:

【参考方案5】:

你可以试试这个:

SELECT DATE(DATE_ADD(m_inv_reqdate, INTERVAL + 1 DAY)) FROM  tr08_investment

【讨论】:

【参考方案6】:

这个怎么样:

select * from fab_scheduler where custid = 1334666058 and eventdate = eventdate + INTERVAL 1 DAY

【讨论】:

【参考方案7】:
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 day");

或者,更简单:

date("Y-m-d H:i:s", time()+((60*60)*24));

【讨论】:

你没有指望夏令时。 mktime 会更好。

以上是关于MySQL:如何在查询中向日期时间字段添加一天的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 的日期中添加一天的最后一小时?

在mysql数据库中添加一整月的日期

如何在 Jquery UI Datepicker 日期范围中再添加一天?

SQL 添加一天开始日期

怎么用java将获取的日期往后添加一天

Codeigniter 如何在用户的注册日期中添加一年