Umwandeln, DateTIme in Date " / " int "ist nicht erlaubt" - Fehler
Ich habe gesucht und gesucht - gefunden Variationen über das Thema, aber keine wirkliche Antwort auf mein problem.
Brauche ich zum konvertieren der MAX
einer datetime
zu date
, und stecken Sie es in eine neue Tabelle die ich angelegt habe.
Hier ist mein code:
INSERT INTO [dbo].[OptOutEmails]([emailaddressid],[FirstOptOutDate], [LastOptOutDate], [bu_id], [brand_id])
SELECT [dbo].[DistinctEmailIds].[emailaddressid] as email
,[dbo].[emailaddresses_summary].[bu_id]
,[dbo].[emailaddresses_summary].[brand_id]
, CONVERT(datetime, max([emailaddresses_summary].[FirstOptOutDate])) AS FirstOptOutDate
, CONVERT(datetime, max([emailaddresses_summary].[LastOptOutDate])) AS LastOptOutDate
FROM [dbo].[DistinctEmailIds]
JOIN [dbo].[emailaddresses_summary]
ON [dbo].[DistinctEmailIds].[emailaddressid] = [dbo].[emailaddresses_summary].[emailaddressid]
WHERE [dbo].[emailaddresses_summary].[LastOptOutDate] IS NOT NULL
GROUP BY [dbo].[DistinctEmailIds].[emailaddressid],[dbo].[emailaddresses_summary].[bu_id],[dbo].[emailaddresses_summary].[brand_id];
GO
Muss es gehen in dieser Tabelle:
[emailaddressid] int not null PRIMARY KEY
, [FirstOptOutDate] datetime null
, [LastOptOutDate] datetime null
, [bu_id] int null
, [brand_id] int null
Die Fehlermeldung die ich bekomme: Msg 257, Ebene 16, Status 3, Zeile 56
Implizite Konvertierung von Datentyp datetime int ist nicht zulässig. Verwenden Sie die CONVERT-Funktion zum ausführen dieser Abfrage.
Ich habe versucht, alles, was ich denken kann. Die daraus resultierende CONVERT
- Anweisung in meinen code aus einer Zeichenkette ich dachte, würde dieses Problem beheben. Nichts funktioniert. Bitte helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist der Fehler, da haben Sie die Reihenfolge der Spalten falsch; die Spalten in der insert-Anweisung entspricht nicht der Reihenfolge in der select-Anweisung:
Du willst dieses:
Auch, möchten Sie vielleicht ändern Sie die aggregierten Spalten
als das vermittelt der Vorsatz besser, und wendet die MAX-Aggregat-Funktion, um die konvertierten datetime-Spalte anstelle von was auch immer es war, bevor (varchar vielleicht?).
Vierten Spalte bu_id ist vom Typ int
Konvertieren tut, Umwandlung in datetime, so dass Sie immer den Fehler
Können Sie es konvertieren in int zurückgeben wird, die Anzahl der Tage seit jan 01, 1900
Oder definieren Sie die Spalte als datetime -
Gleiche Problem mit brand_id Spalte