Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

sp_send_dbmail - Datumsvergleich in query-variable

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Thomas E., 31 August 2013.

  1. Thomas E.

    Thomas E. Neuer Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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'
     
  3. Thomas E.

    Thomas E. Neuer Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden