如何在postgresql中查看日期

时间:2013-04-10 06:54:45

标签: sql postgresql postgresql-9.1

我的表名是tbl1。文件分为idnametxdate

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

现在我想对check txdate < 2-2-2013使用select查询,其中行的txdate不为空,select也会返回哪些行的txdate为空。

结果就像这样

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

有任何可行的解决方案吗? 没有使用联盟可能吗?

2 个答案:

答案 0 :(得分: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

此声明也适用于我的环境。

答案 1 :(得分:0)

假设TXDATE的数据类型为DATE,那么您可以使用WHERE "TXDATE" < '2013-2-2' OR "TXDATE" IS NULL。类似的东西:

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

看到它的实际效果: