如何使用 DATEDIFF() 返回自添加以来已超过 24 小时的行
Posted
技术标签:
【中文标题】如何使用 DATEDIFF() 返回自添加以来已超过 24 小时的行【英文标题】:How can I use DATEDIFF() to return rows where it has been more than 24 hours since it was added 【发布时间】:2017-08-16 07:08:27 【问题描述】:我有一个名为date_added
的列在 mysql 中存储为日期时间的表。
我想返回自添加到数据库以来 24 小时或更长时间的行。
我正在使用以下查询。但是,它不会返回我希望它返回的内容。
SELECT * FROM campaign WHERE datediff(date_added,NOW())>=1
数据库中的date_added
如下所示:2017-08-15 00:48:31
【问题讨论】:
【参考方案1】:你可以这样做
//This code is for SQL
SELECT *, DATEDIFF(HOUR,date_added,NOW()) AS Hours
FROM campaign WHERE DATEDIFF(HOUR,date_added,NOW()) >=24
如你所见,我按小时制作了差异
更新
试试下面这个。
SELECT * FROM campaign
WHERE HOUR(TIMEDIFF(DATE_FORMAT(date_added, "%Y-%m-%d %H:%i:%s"), DATE_FORMAT(NOW(), "%Y-%m-%d %H:%i:%s"))) >= 24
我使用了 TimeDiff 并使用了 dateformat 并做到了小时。
你也可以使用这个查询
SELECT * FROM campaign WHERE TIMESTAMPDIFF(HOUR, date_added, NOW()) >= 24
【讨论】:
#1582 - 调用本机函数 'DATEDIFF' 时参数计数不正确 我认为 MySQL 仅支持 DATEIFF() 的 2 个参数 对不起,这只是 SQL,.检查下面的更新查询 对不起,我没有删除 HOUR,我已经编辑了下面的查询..你现在可以试试。 没有返回任何内容。也许看看 date_added 的样子,我已将其编辑到问题中。 最后,非常感谢。花了将近 3 个多小时在这个大声笑上。【参考方案2】:不要使用任何类型的“差异”。其中任何一个都将匹配 24 小时前“添加”的行。
WHERE date_added < NOW() - INTERVAL 1 DAY
WHERE date_added < NOW() - INTERVAL 24 HOUR
由于CURDATE()
是今天早上的午夜,这将捕获昨天或今天的任何时间所做的任何事情:
WHERE date_added < CURDATE() - INTERVAL 1 DAY
【讨论】:
以上是关于如何使用 DATEDIFF() 返回自添加以来已超过 24 小时的行的主要内容,如果未能解决你的问题,请参考以下文章
T-SQL DateDiff - 按“整小时前”进行分区,而不是“时间分钟变成 00 以来”
如何在nHibernate中使用datediff sql函数?