Announcement

Collapse
No announcement yet.

Select mit Ausgabe aller Felder mit heutigem Datum

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

  • Select mit Ausgabe aller Felder mit heutigem Datum

    Hallo zusammen,


    ich möchte eine Abfrage aus der SAP Buisness One erstellen, diese soll mir alle Geschäftspartner Ausgeben die heute geändert wurden.

    Die Datenbank ist eine MSSQL 2000, die Abfrage erstelle ich mit dem Abfragegenerator aus der SAP Buisness One.

    In Der Datenbank ist ein Feld im Format UpdateDate(datetime, null) unter der Tabelle für Geschäftspartner OCRD.
    Dann möcht ich noch zur Übersicht die Felder GP-Name und GP-Code ausgeben.

    diese Abfrage habe ich mir mit Hilfe von B1 und Goggle zusammengebaut:

    Code:
    SELECT T0.CardCode AS 'GP-Code', T0.CardName AS 'GP-Name', T0.UpdateDate AS 'Aktualisierungsdatum' FROM  [dbo].[OCRD] T0  WHERE T0.UpdateDate = CONVERT(DATETIME,GetDate())
    Diese liefert allerdings 0 Ergebnisse, verändere ich dann den Operator von gleich = auf kleiner als < werden alle GP`s ausgegeben....

    Ich glaube das dies mit der Formatierung des Feldes UpdateDate zu tun hat, schau ich mit dem Enterprise Manager auf dieses Feld ist dort eingetragen am beispiel des heutigen Datums "2008-02-05 00:00:00.000" ohne die Anfürungszeichen.

    Kann mir bitte jemand sagen was ich da nicht verstehe...?

  • #2
    Hallo,

    die GetData()-Funktion liefert den Zeitpunkt (Datum + aktuelle Uhrzeit) zurück, so dass der Vergleich in der WHERE-Einschränkung nur die Datensätze in die Ergebnismenge übernimmt, die auch den gleichen Uhrzeitwert haben. Wenn die Werte in der Spalte UpdateDate jedoch den Zeitanteil auf 0:00:00 maskieren, liefert diese WHERE-Einschränkung immer nur eine leere Ergebnismenge zurück (es sei denn, die Abfrage wird genau um 0:00 Uhr gestartet). Wenn der Uhrzeitanteil 0:00 maskiert werden soll, muss die WHERE-Einschränkung wie folgt geändert werden:

    Code:
    WHERE datum = CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME);
    Die CONVERT-Option 112 übernimmt nur den Datumsanteil im ISO-Format yymmdd (die vollständige Beschreibung aller Optionen ist in BOL auf der Hilfeseite »CAST and CONVERT (Transact-SQL)« zu finden). Das vollständige Beispiel sieht dann so aus:
    [highlight=SQL]
    USE tempdb
    GO

    CREATE TABLE dbo.DateTimeTest
    (
    id INT NOT NULL IDENTITY PRIMARY KEY,
    datum DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
    )
    GO
    INSERT INTO dbo.DateTimeTest DEFAULT VALUES
    INSERT INTO dbo.DateTimeTest (datum) VALUES ('2008-06-02 00:00:00.000')
    GO
    -- leere Ergebnismenge:
    SELECT id,datum
    FROM dbo.DateTimeTest
    WHERE datum = CONVERT(DATETIME,GetDate());
    GO
    -- leere Ergebnismenge:
    SELECT id,datum
    FROM dbo.DateTimeTest
    WHERE datum = GetDate();
    GO
    -- 1 Treffer:
    SELECT id,datum
    FROM dbo.DateTimeTest
    WHERE datum = CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME);
    GO
    [/highlight]
    Zuletzt editiert von Andreas Kosch; 06.02.2008, 08:52.

    Comment


    • #3
      Andreas ....

      DANKEEEEE das geht

      Comment

      Working...
      X