【问题标题】:How can I get the date difference of a timestamp如何获取时间戳的日期差异
【发布时间】:2013-05-18 00:24:07
【问题描述】:

我正在尝试创建一个查询,该查询将根据发布者上次将数据发送到表中的时间来限制插入到表中。

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

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

【问题讨论】:

    标签: mysql datetime unix-timestamp


    【解决方案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
    

    【讨论】:

    • 日期字段是 int。它将日期存储为 10 个字符的 unix 格式
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        然后检查:

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

        如果它的 1 个或多个 - 阻止

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-20
          • 1970-01-01
          • 1970-01-01
          • 2021-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多