Announcement

Collapse
No announcement yet.

Date in SQL-String konvertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Date in SQL-String konvertieren

    Hallo zusammen
    Ich habe folgendes Problem. Ich muss einen SQL-Befehl ausführen, bei dem die Datenbank vorher nicht bekannt ist. Ich packe also alles in einen String und führe den String dann über exec sp_executesql @sql aus
    Das klappt auch alles wunderbar. Nur soll im String eine Datumsabfrage stattfinden. Also ob ein bestimmtest Datum größer ist als ein anderes.

    Code:
    set @sql = 'select * from ' + @table + ' where Date < ' + @date

    geht nicht. Wahrscheinlich, weil das konvertieren von @date in einen char nicht geht. Also muss ich es per Hand machen.
    Code:

    convert(varchar(50), @date, 104)

    Das geht aber auch nicht. Wie kann ich erreichen, dass der SQL-Befehl ausgeführt werden kann? Und woher weiß ich, welches Format ich nehmen muss? Es sollte unter deutschem und englischem Betriebssystem laufen. Ich verwende den MS SQL Server 2005

    Schon mal vielen Dank
    Stefan

  • #2
    sp_ExecuteSQl unterstützt Parameter....
    [HIGHLIGHT="SQL"]DECLARE @SQL NVARCHAR(MAX);
    DECLARE @Params NVARCHAR(MAX);
    DECLARE @Date DATETIME;
    SET @Date = CONVERT (DateTime, '2010-01-01', 120);
    SET @Params = N'@Date DATETIME';
    SET @sql = 'select * from ' + @table + ' WHERE Date < @date '
    EXEC sp_executeSQL @Statement=@Sql, @Params = @Params, @Date = @Date;[/HIGHLIGHT]
    Zuletzt editiert von ebis; 08.12.2010, 11:58.

    Comment


    • #3
      Vielen Dank für den Tipp. Werde es mal ausprobieren.

      Comment


      • #4
        Vielen Dank, es klappt. Jetzt noch eine Frage. Ich muss Abfragen, ob es ein Ergebnis liefert. Aber das klappt noch nicht so.

        if exists (EXEC sp_executeSQL @Statement=@Sql, @Params = @Params, @date = @date)

        Vielen Dank
        Stefan

        Comment


        • #5
          sp_executeSQL aht auch nichts gegen OUTPUT-parameter...

          Comment


          • #6
            Habs gerade selber herausgefunden, sorry dass ich zu schnell gefragt habe.
            Habe einen Outputparameter erzeugt und ein select count gemacht und den Wert in den output-Parameter gespeichert. Hat super geklappt. Danke

            Comment

            Working...
            X