2017-09-27 9 views
1

Ich versuche, ein Datenaufnahmeproblem zu lösen.So ändern Sie Daten als eingefügt

Es ist eine Anwendung, einige Daten und spuckt es in unserer Datenbank sammelt, aber das Problem ist das Datum auf der Client-Seite modifiziert wurde, ist das Sammeln wie ‚DDD TTMMMJJJJ‘ zu sein:

'Sat 20May2017' 

Die Anwendung gehört nicht uns und wir haben keinen Zugriff auf ihren Quellcode. Ich möchte einfach den DDD-Teil von dem Datum vor dem Einfügen löschen, aber das konnte ich nicht erfolgreich durchführen.

Die Tabellenspalte ist definiert als:

SOURCE_DATE DATE NOT NULL 

Wie ist, die Einsätze nicht mit:

Fehler bei der Konvertierung, wenn Datum und/oder Uhrzeit aus Zeichenfolge zu konvertieren.

Aber sie wird Arbeit mit dem Format 'TTMMMJJJJ' (Ich habe dies getestet).

Ich habe versucht, einen Auslöser zu erstellen, um das Problem zu lösen, aber nichts, was ich versucht habe, hat funktioniert. Aktuellster Versuch:

CREATE TRIGGER T_FORMAT_DATE 
ON MY_TABLE 
INSTEAD OF INSERT AS 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO MY_TABLE(SOURCE_DATE) 
    SELECT RIGHT(SOURCE_DATE, LEN(SOURCE_DATE) - 4) 
    FROM inserted; 
END 

Nebenfrage: Gibt es eine Möglichkeit zu wissen, wann/wenn ein Trigger ausgeführt wurde?

Jede Hilfe würde am meisten geschätzt werden.

Antwort

0

ich tun nicht das Gefühl, das ist die beste Antwort, aber hier ist ein Weg:

Ich habe eine "go-between" Tabelle, die die SOURCE_DATE Feld VARCHAR (13) setzt.

Dann wird mein Trigger oder @Yogesh oder @Rahul-Trigger gut funktionieren. Das Problem ist, dass die Tabellenbedingungen am Einsatz und vor der Ausführung des Triggers überprüft werden.

+0

Wenn die folgenden Antworten nützlich sind, dann akzeptiere oder stimme die Lösung/Antwort ab. –

+0

Ich hatte gehofft, dass jemand mit einer besseren Antwort antworten würde. Ich fühle mich wie meins ist nur ein Workaround, keine echte Lösung. –

0

Wenn Sie den Wochentag wie Sat, Sonne, Mon, etc .. von Ihrem gewünschten Datum String entfernen möchten, dann hilft Ihnen unten Kurzbefehl.

DECLARE @DATE NVARCHAR(80); 

SET @DATE = 'Sat 20May2017' 

select LTRIM(REPLACE(@DATE, SUBSTRING(@DATE, 1, 3), '')) DATE 

Ausgang:

+===========+ 
| DATE  | 
+===========+ 
| 20May2017 | 
+-----------+ 
+0

Es gibt immer noch eine Zeichenfolge, konvertieren, dass Datum – Wocugon

+0

Ich habe die Antwort laut "Aber sie werden mit dem Format 'DDMMMYYYY' (Ich habe das getestet)." –

+0

@Sobmac kein Problem, String-Datum wäre in Tabelle einfügen, die ich getestet habe. –

0

Wenn Sie die Woche Tag wie sat entfernen möchten, Sonne, mon, etc .. Sie können try_parsefunction

DECLARE @DATE NVARCHAR(80); 
SET @DATE = 'Sat 20May2017'; 
SELECT Replace(CONVERT(VARCHAR(11), TRY_PARSE(@DATE AS DATE), 106), ' ', ''); 
Verwandte Themen