帮我构建一个SQL select语句

时间:2011-01-05 21:58:33

标签: sql

SQL不是我最大的优势,我需要一些帮助来构建一个select语句。

基本上,这是我的要求。该表存储名称列表以及在表中输入名称的时间戳。名称可以在一周内多次输入,但每天只能输入一次。

我希望select查询返回过去7天内随时输入的名称,但不是今天。

要获取今天输入的名单,这是我的声明:

Select * from table where Date(timestamp) = Date(now())

获取过去7天内输入的姓名列表,不包括今天:

Select * from table where (Date(now())- Date(timestamp) < 7) and (date(timestamp) != date(now()))

如果第一个查询返回一个集合或结果,比如A,第二个查询返回B,我该怎么办?

B-A

3 个答案:

答案 0 :(得分:4)

如果您正在使用SQL Server,请尝试此操作:

 SELECT * FROM Table
 WHERE   Timestamp BETWEEN  
        dateadd(day,datediff(day,0,getdate()),-7), 
    AND dateadd(day,datediff(day,0,getdate()),0)

这可确保时间戳介于00:00 7天前和00:00之间。今天的时间大于00:00的参赛作品将不包括在内。

答案 1 :(得分:3)

简单地说,您需要第二个查询中的记录,其中名称不在您的第一个查询中。在SQL中:

Select * 
    from table 
    where (Date(now())- Date(timestamp) < 7) 
        and (date(timestamp) != date(now()))
        and name not in (Select name 
                             from table 
                             where Date(timestamp) = Date(now())
                        )

答案 2 :(得分:1)

not in

select pk from B where PK not in A

或者您可以执行类似

的操作
Select * from table where (Date(now())- Date(timestamp) < 7) and (Date(now())- Date(timestamp) > 1)