Bonjour,
j'ai un souci de conversion de type text vers date.

J'ai une table contenant 2 colonnes reponse(type text),type.
Je sais que si type = date alors la reponse est une date.
Exemple :

id|reponse|date
-------------
1|2014-01-01|date
2|mon texte|texte
3|2014-02-01|date
Ma query:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT reponse::date FROM table WHERE type = 'date'    ==> OK pas d'erreur
SELECT count(*) FROM table WHERE type = 'date' AND reponse::date BETWEEN '2014-01-01' AND  '2014-02-01'   ==> ERREUR Invalid input syntax for type date :"mon texte", a priori comportement normal
J'ai essayé ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT COUNT(*) FROM
(
       SELECT reponse ::date as reponse_date FROM table WHERE type = 'date'
) TAB
WHERE reponse_date BETWEEN '2014-01-01' AND  '2014-02-01'   
==> ERREUR Invalid input syntax for type date :"mon texte"
Quelqu'un aurait une solution pour qu'il ne tente de convertir que les données retournées par la sous-requête?
Il semble que, malgré le filtre, il tente de convertir les data de la table entière.
j'ai besoin de faire cela à cause des 2 paramètres du BETWEEN. Je ne connais pas à l'avance le format de la date passée en paramètre...