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:如何在查询中向日期时间字段添加一天的主要内容,如果未能解决你的问题,请参考以下文章