代码之家  ›  专栏  ›  技术社区  ›  rockstardev

只排除过去24小时数据的SQL查询?

  •  3
  • rockstardev  · 技术社区  · 15 年前

    我有以下数据:

    Table Name: NODE
    NID | Name | Date
    001 | One  | 1252587739
    

    日期是Unix时间戳。我需要一个查询,这样我只能选择“日期”大于24小时的节点。像这样的:

    SELECT * FROM NODE WHERE Date < NOW() - SOMETHING
    
    1. 有人知道怎么做吗?
    2. now()部分是否考虑到日期存储为unix时间戳?
    3 回复  |  直到 15 年前
        1
  •  6
  •   Carlos Gutiérrez    15 年前

    Unix时间戳以秒为单位。这适用于mysql:

    SELECT * FROM NODE WHERE Date < (UNIX_TIMESTAMP(NOW()) - 24*60*60)
    
        2
  •  2
  •   Tom Studee    15 年前

    其中datediff(hh,date,now())<24

        3
  •  1
  •   Philip Kelley    15 年前

    根据“Unix timestamp=1970年1月1日起的秒数”的定义,并基于MS SQL Server(7.0及更高版本兼容):

    SELECT *
     from NODE
     where datediff(ss, dateadd(ss, Date, 'Jan 1, 1970'), getdate()) < 86400
    

    最里面的括号将秒数添加到1970年1月1日,以SQL Server格式获取行的日期时间;最外面的括号将获取该日期与“现在”之间的秒数;86400是24小时内的秒数。(但是仔细检查一下——我现在还不能调试这个,我可能已经混合了paramater order函数。)