0

我正在尝试创建一个查询,该查询将根据海报最后一次将数据发送到表中来限制插入表中。

例如,如果您将数据发布到表中,那么您将在系统之外再锁定 10 个小时。到目前为止,这是我想出的。但是我对数据的实际结果一无所知。有什么帮助吗?

SELECT DATE(  `date` ) 
FROM tablename
WHERE DATE( CURDATE( ) ) < CURDATE( ) - INTERVAL 1002 
DAY 
LIMIT 0 , 30
4

4 回答 4

1

这将返回过去 10 小时内的单个帖子(如果存在):

SELECT  *
FROM    tablename
WHERE   `date` >= NOW() - INTERVAL 10 HOUR
LIMIT   1

我假设date被声明为DATETIME,因为实际DATE不包含时间部分,因此仅以天为单位。

如果date是整数 UNIX 时间戳,请使用:

SELECT  *
FROM    tablename
WHERE   `date` >= UNIX_TIMESTAMP(NOW() - INTERVAL 10 HOUR)
LIMIT   1
于 2013-05-22T19:54:52.043 回答
0

有很多方法可以做到这一点。也许如果你有一个用户设置表,你可以简单地添加一个“last_insert”字段,并将时间戳存储为一个整数值——这将是一种超级简单的方法——你可以检查当前时间戳与 user_settings.last_insert 和瞧!我想你也可以使用 datetime 。什么东西都能让船浮起来。

于 2013-05-22T19:54:44.563 回答
0

首先,您需要一DATETIME列而不是一DATE列。假设这tablename.date是一DATETIME列,那么现在 10 小时前是CURRENT_TIMESTAMP - INTERVAL 10 HOUR

于 2013-05-22T19:55:07.943 回答
0

首先在您的表中创建一个 Time (TIMESTAMP DEFAULT CURRENT_TIMESTAMP) 列。它将在行插入时自动设置为当前日期

然后检查:

SELECT COUNT(*) FROM Table WHERE Time > NOW() - INTERVAL 10 HOUR

如果它的 1 个或更多 - 块

您必须将上次发布的时间与当前时间进行比较,而不是当前时间与当前时间:|

于 2013-05-22T19:55:21.557 回答