Comment convertir une dateformat de SQL Server en MySQL

J'ai cherché sur Internet pendant presque 6 heures maintenant pour la solution la plus rapide à mon problème.

J'ai une database SQL Server où certaines des tables ont un format DATETIME pour les colonnes, mais les valeurs dans ces colonnes sont au format suivant:

JJ-MM-AAAA HH: MM par ex. 18-12-2012 00:00

De mes searchs, MySQL n'accepte que le format suivant pour ses valeurs DATETIME:

AAAA-MM-JJ HH: MM: SS

Maintenant, je suis en train d'essayer de faire la conversion dans les scripts eux-mêmes, pas la database.

Fondamentalement, j'ai plus de 250 000 loggings dans plusieurs tables au format SQL Server Script. J'ai déjà changé toute la syntaxe de MySQL sauf cette partie.

Toute aide ou conseil serait apprécié. URGENT.

merci c'est la table

CREATE TABLE Price( AirlineCode char(2) NOT NULL , FlightNumber varchar(6) NOT NULL , ClassCode char(3) NOT NULL , TicketCode char(1) NOT NULL , StartDate DateTime NOT NULL , EndDate DateTime NOT NULL , Price decimal NOT NULL , PriceLeg1 decimal NULL , PriceLeg2 decimal NULL , PRIMARY KEY ( AirlineCode, FlightNumber, ClassCode, TicketCode, StartDate ) , FOREIGN KEY (AirlineCode) REFERENCES Airlines (AirlineCode) , FOREIGN KEY (ClassCode) REFERENCES TicketClass (ClassCode) , FOREIGN KEY (TicketCode) REFERENCES TicketType (TicketCode)); 

et ceci est une insertion d'échantillon:

 INSERT INTO Price VALUES ( 'QF', 'QF67', 'ECO', 'E', '18-12-2012 00:00', '04-01-2013 00:00', 3427.82, 1636.14, 2045.20 ); 

Réponse éditée:

En outre, vous pouvez utiliser RegEx dans SQL Server Management Studio :

Trouver quoi: {[0-9][0-9]}\-{[0-9][0-9]}\-{[0-9][0-9][0-9][0-9]} {[0-9][0-9]}\:{[0-9][0-9]}

Remplacer par: \3-\2-\1

entrez la description de l'image ici

Vous pouvez utiliser la fonction STR_TO_DATE() MySQL pour convertir les dates d'un format connu en une valeur datetime. En supposant que vous avez des dates en dd-mm-yyyy hh:mm (tous les numbers 0 sont remplis et hh: mm est une heure de 24 heures), vous pouvez utiliser:

 SELECT STR_TO_DATE('18-12-2012 00:00', '%d-%m-%Y %k:%i') -- 2012-12-18 00:00:00 

Vous pouvez utiliser cette fonction dans vos requêtes d'insertion comme ceci:

 INSERT INTO Price VALUES ( 'QF', 'QF67', 'ECO', 'E', STR_TO_DATE('18-12-2012 00:00', '%d-%m-%Y %k:%i'), STR_TO_DATE('04-01-2013 00:00', '%d-%m-%Y %k:%i'), 3427.82, 1636.14, 2045.20 ); 

modifier

Si l'édition de vos requêtes d'insertion n'est pas possible, vous pouvez laisser MySQL faire toute la conversion. Changez temporairement le type de données des colonnes datetime en VARCHAR et importez datatables. Ajoutez ensuite un champ temporaire, par exemple StartDate_Temp DATETIME et exécutez une requête de mise à jour:

 UPDATE Price SET StartDate_Temp = STR_TO_DATE(StartDate, '%d-%m-%Y %k:%i') 

Une fois que vous avez vérifié que vos données sont OK, supprimez les colonnes temporaires.

Tout d'abord, je tiens à remercier tout le monde pour vos efforts. C'était la première question que j'ai posée à StackOverflow.com et je suis vraiment printingné par le niveau de support.

Après un peu plus de searchs, je me suis souvenu de la bonne vieille boîte à outils de RegEx que j'ai apprise l'année dernière. J'ai donc décidé de l'utiliser à bon escient.

dans Notepad ++ grâce à ses capacités de search Regex, j'ai réussi à retracer chaque valeur de date dans mes 250000 loggings et à les replace par ceux requirejs.

([0-9] [0-9]) – ([0-9] [0-9]) – ([0-9] [0-9] [0-9] [0-9]) ([ 0-9] [0-9]: [0-9] [0-9])

c'était la search que j'ai faite pour le format de date que j'avais, et puis j'ai échangé les valeurs de l'année et du jour et ai ajouté les secondes là aussi bien en ayant ce qui suit dans la boîte Remplacer par:

\ 3- \ 2- \ 1 \ 4: 00

Problème résolu.