2016-04-14 12 views
0

Ich habe ein Problem mit meinem Datum Parameter auf meinem SSIS-Projektbericht. Ich muss nach Datum registrierte Produkte abfragen (heutiges Datum). Unten finden Sie eine Abfrage, in denen ich vorbei bin ...Probleme mit DateTime-Parameter auf SSIS-Projekt

SELECT * FROM [Products] WHERE [CreatedDateTime] = @Date 

Im @Date Parameter habe ich den Wert angegeben heutigen Datum zu sein, so in dem Abschnitt Standardwert ich diesen Ausdruck bestanden haben ‚= Heute() 'Das bekommt das tatsächliche Tagesdatum.

Jetzt das Problem, das ich hier habe ist, dass, wenn ich diesen Bericht ausführen, gibt es keine Ergebnisse zurück, auch wenn die Ergebnisse in der Datenbank sind. Es ist nach ein paar Tests, wenn ich erkannte, dass die Art und Weise, wie die DateTime in meiner Datenbank gespeichert ist anders als die Art und Weise ist mein @Date Parameter ausgeführt wird. Beispiel:

in meiner Sicht auf Sql-Server Ich habe eine CreatedDateTime-Spalte, die das Datum in diesem Format speichert: 2016-04-14 08:58:07.140 < speichert Datum und Uhrzeit wie Sie sehen können.

auf SSIS mein @Date ist nur nach Datum filtern, so zum Beispiel wird es nur bis 2016-04-14 abfragen (nach Datum nur nicht Zeit) und daher keine Ergebnisse zurückgegeben werden.

Ich entdeckte dies durch Hinzufügen eines Textfelds zum Filtern nach eingegebenem Datum .. Wenn ich nur das Datum eingeben, werden keine Ergebnisse zurückgegeben, aber wenn ich das Datum zusammen mit der Zeit eingeben, werden die Ergebnisse zurückgegeben.

Gibt es eine Methode, die ich in meinem @Date-Parameter als die = Today() übergeben könnte, die in meinem Fall funktioniert und nur nach Datum filtern?

Vielen Dank für Ihre Zeit.

Antwort

0

Ich fand schließlich die Lösung dieses Problems mit Hilfe von: this link

Also änderte ich meine SQL-Anweisung wie folgt:

SELECT * FROM [Products] WHERE CAST([CreatedDateTime] AS DATE) = @Date 

und es funktionierte!

+1

Das liegt daran, dass Sie ein SQL-Problem und kein SSIS-Problem hatten. Sie haben einen Nur-Datum-Wert mit einem Wert verglichen, der auch Zeit enthielt. Sie würden nur übereinstimmen, wenn der Zeitabschnitt "00: 00" wäre –