Mais ça ça plante :
Code :
- select * from
- (
- SELECT t1.*, case when CONVERT(datetime, T1.prc_date) < CONVERT(datetime,'03/03/2008') then 1 else 0 end grmpf
- FROM (SELECT * FROM TMP_DATE_TEST WHERE isdate(prc_date) = 1) T1
- ) t2
- where grmpf = 1
|
j'ai l'impression que l'optimiseur réécrit complètement la requête à chaque fois, et se met à faire n'importe quoi là où on tente de lui faire suivre une certainement logique.
à mon avis, tu vas donc devoir passer par une vue afin d'empêcher l'optimiseur de faire n'importe quoi :
Code :
CREATE VIEW grmpf AS SELECT id, prc_date FROM tmp_date_test WHERE isdate(prc_date) = 1 go
|
Ensuite tu fais ta requête tu début, mais sur la vue :
Code :
SELECT * FROM grmpf WHERE isdate(prc_date) = 1 AND CONVERT(datetime, prc_date) < CONVERT(datetime,'03/03/2008')
|
arf, non, ça marche pas
amuse-toi bien, là c'est total n'importe quoi ce que fait SQL Server...
t'es bon pour faire une fonction qui retourne une table (comme la vue, mais une fonction, là t'es sûr que SQL Server va pas s'amuser à faire n'importe quoi... enfin... sûr... espérer tout du moins
Message édité par MagicBuzz le 16-01-2008 à 12:37:57