2013-04-10 3 views
0

мое имя таблицы tbl1. Филе составляет id, name, txdate.Как проверить дату в postgresql

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

Теперь я хочу использовать запрос на выборку для проверки txdate < 2-2-2013, в котором строки имеют txdate не пусто и выберите также Retrun, какие строки имеют txdate пустой.

Результат подобен этому

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

Любое допустимое решение есть ?. Без использования соединения можно ?.

+2

Что такое тип данных 'txdate'? –

+0

@MahmoudGamal txdate date. – Sathish

ответ

0

Предполагая, что TXDATE имеет тип данных DATE, то вы можете использовать WHERE "TXDATE" < '2013-2-2' OR "TXDATE" IS NULL. Что-то вроде:

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

в действии:

1

Я сейчас не то, что база данных вашего используют и какие данные введите TXDATE есть.

Я только что попробовал на своем postgreSQL 9.2 с полем «timestamp without time zone».

У меня есть три строки в таблице, как:

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 

Это заявление также работает в моей среде.

Смежные вопросы