如何使用 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函数?

SQL Server 2014 中类似于 DATEDIFF_BIG 的自定义代码

自[重复]以来如何“撤消”git提交同时保留所有其他提交

如何使vim指示自上次保存以来文件已更改?

如何查找自多少天以来列的值为True?