【问题标题】:How can I remove the Status = Pending with the Date of less than the currentdate in a select statement如何删除选择语句中日期小于当前日期的状态 = 待处理
【发布时间】:2026-01-15 18:55:01
【问题描述】:

如何在我的查询中删除 Status = Pending 且日期小于当前日期...这应该是一个 select 语句

Status Date
Pending 9/5/2014  
Pending 9/30/2014
Complete 8/28/2014
Error 8/20/2014

【问题讨论】:

  • 请多描述一下!!
  • 您是从表中删除还是从表中选择?
  • 正在选择表格...更新了问题和正文

标签: sql tsql sybase


【解决方案1】:

由于您说您希望删除当前日期之前状态为“待处理”的数据,因此我假设您希望删除该数据。这是删除查询。

DELETE FROM my_table
WHERE status = 'Pending'
AND date < CAST(GETDATE() AS DATE);

但是,由于您提到您需要一个选择语句,因此这里的选择查询不包括当前日期之前状态为“待定”的记录。

SELECT status, date FROM my_table 
WHERE status <> 'Pending'
AND date < CAST(GETDATE() AS DATE)

(上面的查询将错误地跳过所有状态为“待定”的记录)下一个查询应该完全按照预期工作。

SELECT status, date FROM my_table 
EXCEPT
SELECT status, date FROM my_table 
WHERE status = 'Pending'
AND date < CAST(GETDATE() AS DATE);

【讨论】:

  • 你好,我需要去掉当前日期之前的日期,状态为pending。
【解决方案2】:

你可以使用

SELECT status, date FROM Test 
WHERE status <> 'Pending'
AND date < CAST(GETDATE() AS DATE)

http://sqlfiddle.com/#!6/755f0/1

【讨论】:

    【解决方案3】:

    试试下面的方法。我认为它应该做的工作。如果您仅更改状态列,则以下内容应该有效。

        SELECT  CASE  WHEN date < CAST(GETDATE() AS DATE) and status ='Pending' 
        THEN 'YouNEwStatus' 
          ELSE
              status END AS status, date
          FROM  
                MYTable
    

    如果你隐藏了行。上面这位先生提到的查询应该可以。

    SELECT status, date FROM Test 
    WHERE status <> 'Pending'
    AND date < CAST(GETDATE() AS DATE)
    

    【讨论】: