如何获取时间戳的日期差异

时间:2013-05-22 19:51:06

标签: mysql datetime unix-timestamp

我正在尝试创建一个查询,根据上次向海报发送数据的时间限制插入表格。

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

有很多方法可以做到这一点。也许如果你有一个用户设置表,你可以简单地添加一个“last_insert”字段,并将时间戳存储为一个整数值 - 这将是一个超级简单的方法 - 你可以检查当前的时间戳与user_settings.last_insert和瞧! 我想你也可以使用日期时间。无论什么漂浮在船上。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

然后检查:

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

如果是1或更多 - 阻止

您必须将最后一个帖子的时间与当前时间进行比较,而不是将当前时间与当前时间进行比较:|