J'ai été confronté à un scénario étrange lors de la comparaison entre les dates dans postgresql (version 9.2.4 sous Windows). J'ai une colonne dans ma table indiquant update_date avec le type «horodatage sans fuseau horaire». Le client peut effectuer une recherche dans ce champ avec uniquement la date (par exemple: 2013-05-03) ou la date avec l'heure (par exemple: 2013-05-03 12:20:00). Cette colonne a la valeur comme horodatage pour toutes les lignes actuellement et a la même partie de date (2013-05-03) mais une différence de temps.
Lorsque je compare sur cette colonne, j'obtiens des résultats différents. Comme les suivants:
select * from table where update_date >= '2013-05-03' AND update_date <= '2013-05-03' -> No results
select * from table where update_date >= '2013-05-03' AND update_date < '2013-05-03' -> No results
select * from table where update_date >= '2013-05-03' AND update_date <= '2013-05-04' -> results found
select * from table where update_date >= '2013-05-03' -> results found
Ma question est de savoir comment puis-je rendre la première requête possible pour obtenir des résultats, je veux dire pourquoi la troisième requête fonctionne mais pas la première?
'2013-05-03'::date
et'1 day'::interval
) est-elle spécifique à PostgreSQL?