MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 02.07.2019, 17:11   #1
pwakolbi
MOF User
MOF User
Standard T-SQL : MSSQL 2014 - Nach Datum suchen

Hallo

Ich versuche mein Glück schon etwas länger mit diesen Konstrukt nach Datumswerten zu filtern. Es werden alle Ergebnisse gefunden. (bis eben nicht das Datum)
Was stimmt nicht?
Erwähnen möchte ich noch das ich mich erst vor kurzen SQL Server zugewandt habe. Es könnte sein das ich hier etwas falsch verstehe.

Code:

ALTER Proc [dbo].[spSuchenAngebot]
......
@DatumVon date = Null,
@DatumBis Date = Null, 
......
as
SELECT 
..... 
Datum, 
.....
FROM dbo.tblAngebot INNER JOIN 
dbo.tblKundenAdressen ON 
dbo.tblAngebot.Kundennummer = dbo.tblKundenAdressen.Adressnummer
WHERE
......
AND (isNull(@Datumvon,'19000101') IS NULL oR --= '19000101' Or
	Datum >= @DatumVon) 
AND (isNull(@DatumBis,'29001231') IS nULL OR -- = '29001231' Or
	Datum <= @DatumBis) 
.....
Ich währe für einen Tipp dankbar!

mfg

Peter
pwakolbi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.07.2019, 18:05   #2
markusxy
MOF Meister
MOF Meister
Standard

Vielleicht solltest du dich mal damit beschäftigen was IsNull macht.
Deine Bedingung: isNull() Is Null.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.07.2019, 20:16   #3
hcscherzer
MOF Guru
MOF Guru
Standard

Die beiden Variablen @DatumVon und @DatumBis bekommen beide am Anfang der Prozedur den "Wert" Null zugewiesen.
Das ist ziemlich kontraproduktiv denn so leerst Du die übergebenen Werte.

Was Markus dann über die Funktion IsNull() schreibt kommt noch oben drauf.
Die beiden Kriterien - jeweils vor dem OR - können nie WAHR sein, so wie Du das anstellst.
Und falls einer der beiden übergebenen Parameter NULL ist, wird der jeweilige Teil nach dem OR fraglich.

Was willst Du mit der IsNull() in der Where-Bedingung bewerkstelligen?
Soll ein Wert angenommen werden, falls keiner übergeben wurde beim Aufruf der Prozedur?

Was ist mit dem Fall, dass das Feld Datum leer ist?
Kann das vorkommen? Wenn ja, solltest Du auch das abfangen (das habe ich im folgenden Beispiel aber nicht umgesetzt).

Code:

ALTER Proc [dbo].[spSuchenAngebot]
(@DatumVon date, @DatumBis Date) 
......
as

SET @DatumVon = IsNull(@DatumVon, '1900-01-01')
SET @DatumBis = IsNull(@DatumBis, '2900-31-12')

SELECT 
..... 
Datum, 
.....
FROM dbo.tblAngebot INNER JOIN 
dbo.tblKundenAdressen ON 
dbo.tblAngebot.Kundennummer = dbo.tblKundenAdressen.Adressnummer
WHERE
......
AND @DatumVon <= Datum 
AND @DatumBis >= Datum 
.....

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.

Geändert von hcscherzer (02.07.2019 um 20:19 Uhr).
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.