2016-06-24 5 views
0

Ich habe eine Anwendung, die eine DAT-Datei in einige SQL Server-Tabellen importiert.Datumsformatprobleme SQL Server 2012

Die DAT-Datei enthält manchmal falsche Datumsformate.

Beispiel:

DateCreated = 000100893 

Die DateCreated Spalte in SQL Server ist ein datetime Typ.

Die Anwendung schlägt beim Importieren der Daten aufgrund eines falschen Formats fehl, und ich muss diese Werte manuell auf null setzen, damit ich sie erneut importieren kann.

Gibt es in SQL eine Möglichkeit, Einschränkungen für die Datetime-Spalte zu haben? Wenn beispielsweise die Daten nicht im richtigen Format vorliegen, wird die Spalte automatisch auf Null gesetzt. Ich kann den datetime Datentyp für diese Spalte nicht ändern, da die Daten die meiste Zeit korrekt sind und ich diese Spalte für andere Berechnungen verwende.

+0

Warum das Datum nicht analysieren? –

+0

Dies ist Standard-ETL, Extraktion, Transformation und Laden. Importieren Sie Ihre DAT-Datei für die Extraktion in eine Staging-Tabelle, in der alle Felder, die Daten empfangen, varchar sind. Der Umwandlungsteil besteht darin, andere Spalten aus den Varchar-Spalten zu aktualisieren. In diesem Fall würden Sie dateCreated von dateCreatedVarchar aktualisieren, indem Sie eine where-Klausel verwenden, um Werte wie "fred" und "barney" herauszufiltern. Der Ladeteil soll aus der Staging-Tabelle in Ihre Haupttabellen schreiben. –

Antwort

2

Sie suchen die TRY_PARSE Funktion:

SELECT TRY_PARSE(DateCreated AS datetime) 

Es gibt null wenn DateCreated nicht in datetime