sp_send_dbmail - Datumsvergleich in query-variable

Thomas E.

Neuer Benutzer
Beiträge
2
Hallo,

ich habe folgendes Problem mit der quert-Variable der internen Prozedur sp_send_dbmail.

1.
Ich habe eine datums-Variable wie folgt deklariert und einen Wert zugewiesen:

DECLARE @comparedate AS datetime
SET @comparedate = GETDATE() - 4

2.
Jetzt möchte ich den Wert von @comparedate (also Tagesdatum minus vier Tage) als Vergleichswert in einer quert-Variable verwenden die dann als Parameter an die Prozedur sp_send_dbmail übergeben wird. Dazu habe ich diese SET-Anweisung gebildet:

SET @abfrage='SELECT Anlagedatum, Artikel FROM S_artikel WHERE Firma = ''200'' AND Anlagedatum >=' + @comparedate + ' ORDER BY Anlagedatum'

Hier erhalte ich dann folgende Fehlermeldung:

Meldung 241, Ebene 16, Status 1, Zeile 26
Fehler beim Konvertieren einer Zeichenfolge in einen datetime-Wert.

Kann mir jemand helfen und mir sagen ob das so funktionieren kann, bzw. wie der Ausdruck richtig gebildet wird?

Vielen Dank.

Noch folgende Info:
Das Ganze soll auf einem MS SQL Server 2005 Enterprise Edition SP4 ausgeführt werden.

Thomas
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Du musst eigentlich nur DATETIME nach VARCHAR() konvertieren, z.B. mit cast() oder convert(). Allerdings willst du den Code im Nachhinen wieder ausführen da wirst du je nach Format in dem das geschieht wieder einen Fehler bekommen.

Verwende sicherheitshalber noch eine explizite Konvertierung innerhalb von @abfrage, z.B. so:
Code:
SET @abfrage='SELECT Anlagedatum, Artikel FROM S_artikel WHERE Firma = ''200'' AND Anlagedatum >= convert(DATETIME,' + CHAR(39) + convert(CHAR(23),@comparedate,121) + CHAR(39) + ',121) ORDER BY Anlagedatum'
 
Werbung:

Thomas E.

Neuer Benutzer
Beiträge
2
Hallo,

vielen Dank für deine Antwort.

Ich habe es inzwischen so gelöst:

SET @abfrage='SELECT Anlagedatum, Artikel FROM S_artikel WHERE Firma = ''200'' AND Anlagedatum >= '''+ convert(varchar,@comparedate,104)+
''' ORDER BY Anlagedatum'

Wichtig war einmal die Datumskonvertierung, aber auch die weiteren Hochkommata vor dem ersten Pluszeichen und hinter dem zweiten Pluszeichen.

Viele Grüsse,
Thomas
 
Oben