sql在几分钟内获取数据没有得到正确的结果

时间:2014-03-26 08:41:06

标签: sql sql-server

我有一个像这样的交易表:

Tbarcode     PlateNo     DelDate                    status
10           101        2014-03-26 12:14:10.000       4
11           102        2014-03-26 12:10:10.000       4
12           103        2014-03-26 12:05:10.000       5
13           104        2014-03-26 12:15:10.000       5

我希望得到所有记录状态4和状态5(但状态5只需要DelDate +当前时间的3分钟。)如果当前时间超过3分钟的deldate,我不想显示状态5记录..i写了这样的东西:

select t.TBarcode,t.PlateNo   from transaction_tbl t  where status in(4,5) and DATEDIFF(n,CAST(DelDate as datetime),GETDATE())<=3

但这不起作用..我可以这样做吗?任何帮助都非常appricaibale

2 个答案:

答案 0 :(得分:1)

听起来你只需要使用OR而不是'IN'来处理你的WHERE。

类似的东西:

SELECT  t.TBarcode ,
        t.PlateNo
FROM    transaction_tbl t
WHERE   [status] = 4
       OR ([status] = 5 AND DATEDIFF(n, CAST(DelDate AS DATETIME), GETDATE()) <= 3)

答案 1 :(得分:0)

试试这个。

SELECT  t.TBarcode ,
        t.PlateNo
FROM    transaction_tbl t
WHERE   status = 4
UNION
SELECT  t.TBarcode ,
        t.PlateNo
FROM    transaction_tbl t
WHERE   status = 5
        AND DATEDIFF(n, CAST(DelDate AS DATETIME), GETDATE()) <= 3