【问题标题】:MySQL Select if Timestamp is in the pastMySQL 选择时间戳是否在过去
【发布时间】:2013-02-09 08:34:51
【问题描述】:

我有一个这样的数据库:

表格 姓名 |时间戳 ------------------------------------------ 你好 | 2013-02-23 14:26:18 哟 | 2013-03-22 14:26:18

我想做一个 SQL 选择,只选择过去的事情(例如,没有为未来设置时间戳)。

最好的方法是什么?

感谢您的帮助。

编辑:

我尝试了这些建议,但它们似乎都不起作用,这是查询:

SELECT * FROM TABLE WHERE timestamp<NOW()

它仍然选择了一切,我也尝试过:

SELECT * FROM TABLE WHERE timestamp<CURRENT_TIMESTAMP

它仍然再次选择了所有内容。

真的很奇怪,当我使用“timestamp>CURRENT_TIMESTAMP”时,它似乎可以工作(它隐藏了所有未来的项目)但当我尝试另一个没有意义的方向时却不行。可能是时区问题还是类似的问题?

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:
    SELECT `Name` FROM `TABLE` WHERE `timestamp` < NOW();
    

    应该得到你想要的。

    【讨论】:

      【解决方案2】:
      SELECT * FROM TABLE WHERE timestamp<now();
      

      【讨论】:

        【解决方案3】:

        尝试以下查询:

        SELECT * FROM YourTable WHERE 'timestamp' < CURRENT_TIMESTAMP
        

        【讨论】:

        • 这真的很奇怪,反之亦然。 (例如 SELECT * FROM Table WHERE 时间戳>CURRENT_TIMESTAMP)。这仅显示来自未来的项目。但是,如果我尝试反过来,它会显示所有内容,这是没有意义的,我不知道为什么。
        • @Talon 你的列'timestamp'的数据类型是什么?
        【解决方案4】:

        你试过了吗

        SELECT * 
        FROM yourtable T
        WHERE T.timestamp < NOW();
        

        ...?

        NOW() ...

        将当前日期和时间作为 'YYYY-MM-DD HH:MM:SS' 中的值返回 或者 YYYYMMDDHHMMSS.uuuuuu 格式,取决于函数是否 在字符串或数字上下文中使用。该值表示为 当前时区。

        【讨论】:

        • 这真的很奇怪,反之亦然。 (例如 SELECT * FROM Table WHERE timestamp>NOW() )。这仅显示来自未来的项目。但是,如果我尝试反过来,它会显示所有内容,这是没有意义的,我不知道为什么。
        • 尝试SELECT NOW();查看服务器当前时间。
        【解决方案5】:
        select * from table where `timestamp` < now()
        

        【讨论】:

          猜你喜欢
          • 2011-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-16
          • 1970-01-01
          • 2012-08-08
          • 2012-07-08
          • 2016-07-16
          相关资源
          最近更新 更多