我正在尝试创建一个查询,该查询将根据海报最后一次将数据发送到表中来限制插入表中。
例如,如果您将数据发布到表中,那么您将在系统之外再锁定 10 个小时。到目前为止,这是我想出的。但是我对数据的实际结果一无所知。有什么帮助吗?
SELECT DATE( `date` )
FROM tablename
WHERE DATE( CURDATE( ) ) < CURDATE( ) - INTERVAL 1002
DAY
LIMIT 0 , 30
我正在尝试创建一个查询,该查询将根据海报最后一次将数据发送到表中来限制插入表中。
例如,如果您将数据发布到表中,那么您将在系统之外再锁定 10 个小时。到目前为止,这是我想出的。但是我对数据的实际结果一无所知。有什么帮助吗?
SELECT DATE( `date` )
FROM tablename
WHERE DATE( CURDATE( ) ) < CURDATE( ) - INTERVAL 1002
DAY
LIMIT 0 , 30
这将返回过去 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
有很多方法可以做到这一点。也许如果你有一个用户设置表,你可以简单地添加一个“last_insert”字段,并将时间戳存储为一个整数值——这将是一种超级简单的方法——你可以检查当前时间戳与 user_settings.last_insert 和瞧!我想你也可以使用 datetime 。什么东西都能让船浮起来。
首先,您需要一DATETIME
列而不是一DATE
列。假设这tablename.date
是一DATETIME
列,那么现在 10 小时前是CURRENT_TIMESTAMP - INTERVAL 10 HOUR
。
首先在您的表中创建一个 Time (TIMESTAMP DEFAULT CURRENT_TIMESTAMP) 列。它将在行插入时自动设置为当前日期
然后检查:
SELECT COUNT(*) FROM Table WHERE Time > NOW() - INTERVAL 10 HOUR
如果它的 1 个或更多 - 块
您必须将上次发布的时间与当前时间进行比较,而不是当前时间与当前时间:|