Bonjour

je voudrai pouvoir analyser un sql afin de modifier le format des dates

je m'explique

j'ai deux DB, une avec le format de date mm-dd-yyyy et l'autre avec le format de date dd-mm-yyyy.

lorsque le programme génère un sql, avec des dates dedans, il fonctionne sur la Db source mais pas sur la DB de destination.
les dates étant envoyées sans spécifier le format.

Les changement nécessaire dans le programme vont prendre du temps, donc je voudrai faire un petit programme qui analyse les requête
SQL, trouve celle où il-y-a une date et faire une insertion autour de la date avec 'convert(datetime,'

sql d'origine :
Insert into itemmains (ItemMainNumber,ColRoot,WSRoot,ItemMainCode ,ItemMainDateCreate, ItemMainDateModify )
VALUES ( 2, 1, 1, '990003','30/09/2010','20/07/2012')

SQl modifié
Insert into itemmains (ItemMainNumber,ColRoot,WSRoot,ItemMainCode ,ItemMainDateCreate, ItemMainDateModify )
VALUES ( 2, 1, 1, '990003',convert(datetime, '30/09/2010' , 103), convert(datetime, '20/07/2012' , 103))

J'ai fait un premier sql qui me fait cette modif mais ça ne marche que quand toutes les dates sont identiques

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
update tm_commands set tm_command = CASE WHEN len(v1date) > 0 THEN replace(convert(varchar(max),tm_command), v1date, 'convert(datetime,' + v1date + ',103)') ELSE tm_command END 
From tm_commands
inner join ( 
  select tm_id as v1id 
  , case WHEN convert(integer, patindex('%|[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]|%', tm_command)) >= 1 THEN substring(tm_command, patindex('%|[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]|%', tm_command), 12) ELSE '' END  as v1date 
  From tm_commands
  where tm_command like '%|[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]|%' 
  and tm_command not like '%datetime,|[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]%' 
) as v1 on v1.v1id = tm_id
Auriez-vous une idée ou une sugestion pour résoudre ce problème?

D'avance merci
Tazze