Laden...

WHERE auf Berechnete Datediff Spalte

Erstellt von Jrotten vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.862 Views
Jrotten Themenstarter:in
66 Beiträge seit 2006
vor 17 Jahren
WHERE auf Berechnete Datediff Spalte

Das ist zwar nicht direkt c# aber vielleicht kann mir ja jemand schnell helfen. Ist wahrscheinlich bloß eine Kleinigkeit.

,datediff (day, ISNULL((SUBSTRING(DATDate,7,4) + SUBSTRING(DATDate,1,2) + SUBSTRING(DATDate,4,2)), '20060602') , getdate()) as 'Diff'

die spalte gibt mir eine Zeitspanne in Tagen aus.

Wenn ich in der Where Klausel aber
WHERE diff > 5 eingebe bekomme ich den fehler

Server: Nachr.-Nr. 241, Schweregrad 16, Status 1, Zeile 1 Syntaxfehler beim Konvertieren einer Zeichenfolge in eine datetime-Zeichenfolge.

Nuk-u-lar, es heisst nuk-u-lar
Ich hoffe mein Schaden hat kein Gehirn genommen
Da sind Marge, Bart, MädchenBart und das kleine Ding das den Mund nicht aufmacht
Warum nimmt ein Kerl wie du einen Kerl wie Selma zur Frau?
I'm not normally a praying man, but if you're up there please save me Superman

D
496 Beiträge seit 2005
vor 17 Jahren

hi

ich weiss zwar nicht was du da genau machst aber du kannst keine operatoren auf bezeichner anwenden, in deinem sql string ist diff nur ein string deshalb auch diese fehlermeldung.
also: where 'dann deine berechnung von diff' > 5

also vermutlich so:

where datediff (day, ISNULL((SUBSTRING(DATDate,7,4) + SUBSTRING(DATDate,1,2) + SUBSTRING(DATDate,4,2)), '20060602') , getdate()) > 5

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

Jrotten Themenstarter:in
66 Beiträge seit 2006
vor 17 Jahren

genau das funktioniert eben nicht mit der gleichen Fehlermeldung.

Ich habe eine Datumsspalte und eine Spalte die eine Zahlenfolge enthält (eigentlich ein normales Textfeld. Im textfeld steht ein Datum aber eben so blöd formatiert. (wenn nichts drin steht nehme ich das heutige datum)

da steht halt was wie 20051706 oder so ähnlich (hab die Tabelle jetzt nicht vor mir)

Ich will die zwischen den Daten liegenden Tage ausrechnen und die mit mehr als 5 anzeigen.

(ich habs testweise in eine View gepackt und dann auf die Spalte WHERE ... > 5 aber das liefert den selben Fehler

Der eigentlich springende Punkt ist dann wohl die umwandlung von "20050603" in ein Datumsfeld

Trotzdem danke für deine Hilfe. Und wenn noch wem was einfällt....

Nuk-u-lar, es heisst nuk-u-lar
Ich hoffe mein Schaden hat kein Gehirn genommen
Da sind Marge, Bart, MädchenBart und das kleine Ding das den Mund nicht aufmacht
Warum nimmt ein Kerl wie du einen Kerl wie Selma zur Frau?
I'm not normally a praying man, but if you're up there please save me Superman

S
53 Beiträge seit 2005
vor 17 Jahren

Hi,

micht stört an deinem Select die IsNull Anweisung.
Schau bitte in der Hilfe nach, IsNull liefert einen boolischen Wert zurück, dort wo du die ISNULL Funktion plaziert hast, wird aber ein datetime, smalldatetime, bzw. ein string erwartet.