如何在查询中排除状态为Pending且创建日期小于当前日期的行?

时间:2014-09-30 03:55:07

标签: sql tsql sybase

如何在查询中排除状态为Pending且创建日期小于当前日期的行?

[Table]  
Status CreationDate  
Pending  9/30/2014 9:00 PM
Completed 9/14/2014 10:52 AM
Pending 9/30/2014 10:00 PM

2 个答案:

答案 0 :(得分:1)

Select * FROM tableA 
WHERE status not like 'Pending'
And CreationDate < GETDATE()

答案 1 :(得分:1)

SELECT * FROM sometable 
WHERE Status != 'Pending' 
AND DATE(CreationDate) = GETDATE();

由于您的创建日期是时间戳或日期时间字段,您希望将其强制转换为日期,因此您可以与GetDate返回的值进行比较,后者返回日期,而不是日期时间。因此,此查询仅包括状态未挂起且创建日期为今天的记录,这与您的排除声明相反。

我无法让你成为SQL Fiddle,因为SQL Fiddle不支持Sybase。

注意,到目前为止,在Sybase中将转换视为Sargable,这意味着它将在您的creationdate字段中有效使用索引 - 您应该拥有该索引我有非平凡的表大小并计划运行这种查询很多。