2

我的表名是tbl1。文件是id, name, txdate.

| ID | NAME    | TXDATE    |
| 1  | RAJ     | 1-1-2013  |
| 2  | RAVI    |           |
| 3  | PRABHU  | 25-3-2013 |
| 4  | SAT     |           |

现在我想使用选择查询来检查txdate < 2-2-2013哪些行的 txdate 不为空,并且选择还重新运行哪些行的 txdate 为空。

结果是这样的

| ID | NAME    | TXDATE    |
| 1  | RAJ     | 1-1-2013  |
| 2  | RAVI    |           |
| 4  | SAT     |           |

有什么可行的解决方案吗?如果不使用联合,有可能吗?

4

2 回答 2

1

假设TXDATE是数据类型,DATE那么您可以使用WHERE "TXDATE" < '2013-2-2' OR "TXDATE" IS NULL. 就像是:

SELECT *
FROM table1
WHERE "TXDATE" < '2013-2-2'
  OR "TXDATE" IS NULL;

看看它的实际效果:

于 2013-04-10T07:02:44.660 回答
1

我现在不知道您使用的是什么数据库以及是什么数据类型TXDATE

我刚刚在我的 postgreSQL 9.2 上尝试了一个字段“没有时区的时间戳”。

我在表中有三行,例如:

 ac_device_name | ac_last_heartbeat_time

----------------+-------------------------

 Nest-Test1     |

 Nest-Test3     |

 Nest-Test2     | 2013-04-10 15:06:18.287

然后使用下面的语句

select ac_device_name,ac_last_heartbeat_time 
from at_device 
where ac_last_heartbeat_time<'2013-04-11';

可以只返回一条记录:

 ac_device_name | ac_last_heartbeat_time

----------------+-------------------------

 Nest-Test2     | 2013-04-10 15:06:18.287

我认为您可以尝试以下语句:

select * from tbl1 where TXDATE<'2-2-2013' and TXDATE is not NULL

这句话也适用于我的环境。

于 2013-04-10T07:23:05.670 回答