2016-07-09 4 views
1

Ich habe gerade festgestellt, dass nach dem Import 8 Millionen Datensätze in die Datenbank (lange Zeit!), Dass leider einige Termine gemischt sind (UK und US-Format, nicht gut!)Mischung von UK und US Daten - Konvertieren Sie alle nach UK

dh

26/03/2015 22/12/2014 10/08/2012 11/17/2011 11/30/2010

Nicht nur das, die Spalte der Datenbank varchar, was auch nicht gut für die Leistung ist.

ich eine Testdatenbank gemacht habe, und ich habe versucht, dies mit fehlschlagen:

SELECT convert(varchar, getdate(), 103) 

Ich versuche, die britischen Daten, dh 25/11/1992 und nicht 11/25/1992

zu erhalten

Jede Hilfe wäre toll, sonst ist das Nachtverschwendung beim Hochladen von Daten!

+3

Dies ist einfach eine beschädigte Daten, wenn Sie Daten im gemischten Format haben, es sei denn, es gibt eine Spalte, die Ihnen sagt, welches Format es ist, können Sie nicht 100% sicher sein, welche sind US oder UK Daten, wie '01/03/2013 ist der erste März in Großbritannien und der 3. Januar in den USA, es sei denn, Sie wissen, welche Art von Datum es gibt keine Möglichkeit zu sagen, was es wirklich sein sollte, US oder UK Datum, ich würde zurück zu dem Ort von wo gehen die Daten wurden extrahiert und erhalten gültige Datenextrakte –

+0

Gibt es eine andere Spalte in der Tabelle, die das Land angibt, für das der Eintrag bestimmt ist? – Kramb

+0

Sie können die zuverlässig falschen finden, wo der Tageswert größer als 12 ist. Das ist einfach. Wenn der Wert für den Tag (und den Monat) im Bereich von 1..12 liegt, werden Sie snookered; Es könnte ein Datum in den USA oder Großbritannien sein. Es gibt kein Wissen ohne einige zusätzliche Informationen, die korrekt sind. Wenn Sie Glück haben, gibt es ein anderes Datumsfeld im selben Datensatz, das anzeigt, ob der Datensatz als Ganzes im US- oder UK-Format war. Es gibt Aufzeichnungen, wo das nicht passiert. So traurig; die Daten sind grundsätzlich wertlos, außer man weiß, ob es der 12. Januar oder der 1. Dezember war - das ist ein großer Unterschied! –

Antwort

0

die richtige Art und Weise des Auswahl auf Ihrem Beispiel ist wie folgt:

select CONVERT(VARCHAR(10),GETDATE(),103) 

aber ich war von zwei Lösung denken eine Funktion machen die nehmen ein varchar von US-Datum und das Rück varchar von UK Datum aber Das große Problem, das Sie nicht wissen, wenn in der Tabelle das ganze Datum US-Art ist, wenn Sie surly herausfinden können, welche Art des Datums Sie gerade das Problem gelöst haben, und Sie können diese Regel auf die Funktion setzen einige Parameter, die dazu beitragen beziehe das ein.

Auch müssen Sie nicht alle Daten erneut importieren, nachdem Sie die oben genannten Dinge machen nur eine Update-Anweisung der aktuellen Tabelle mit der Funktion.

viel Glück.

Verwandte Themen