Changer le format des dates dans une requête SQL
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. :cry:
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:
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