2016-06-30 11 views
0

Ich habe eine gespeicherte Prozedur, die ich baue, wo es fehlschlägt, wenn ich versuche, Daten einzufügen. Dies ist der Einsatz:Fehler mit Datum einfügen - Konvertierung fehlgeschlagen beim Konvertieren von Datum und/oder Uhrzeit aus Zeichenkette

INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total]) 
    SELECT 
     CONVERT(DATE, getdate()) AS 'Date', 
     DATENAME(yyyy, getdate()) AS 'Year', 
     DATENAME(mm, getdate()) AS 'Month', 
     COUNT([BG_BUG_ID]) AS 'Total' 
    FROM 
     [maint_maintenance_db].[td].[BUG] 
    WHERE 
     YEAR(DETECTION_DATE]) = YEAR(getdate()) 
     AND MONTH([DETECTION_DATE]) = MONTH(getdate()) 

Wenn ich den Code ausführen oben ich diesen Fehler:

Msg 241, Level 16, State 1, Procedure usp_TC_TESTCYCL_ID_COUNT_PILOT_UCPATH, Line 10
Conversion failed when converting date and/or time from character string.

Wenn ich den Code ändern CAST verwendet es funktioniert, aber nicht zurück, die richtig Werte. Unten ist der Code:

Wie kann ich das zum Funktionieren bringen? Jede Hilfe wird geschätzt!

Danke

+0

Sind Sie triying, um "MONTH name" oder "MOnth numer" zu erhalten ?, was ist die Spaltendefinition für Ihre Tabelle DEFECTS_MAINTENANCE – thepanch

+0

Für Starter fehlt Ihnen ein Komma in Ihrer INSERT-Anweisung zwischen den letzten zwei Spalten. – BJones

+0

Welcher Datentyp ist 'DETECTION_DATE'? – BJones

Antwort

1

Es sieht so aus [Monat] ist vom Typ datetime.
Deshalb ist die Besetzung funktioniert: CAST (getdate() als Datetime)

In Ihrem INSERT zu konvertieren verwenden Sie versuchen, eine 2-stellige Zahl in ein Datum implizit zu konvertieren und in Ermangelung eines solchen ist.

,datename(mm,getdate()) AS 'Month' 

Ändern Sie den Monat so, dass er ganzzahlig oder char (2) ist, und Sie sollten alle gesetzt sein.

Verwandte Themen