Anzeige - [Interessiert an einer Anzeige?]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> MSSQL Abfrage
Webi
Geschrieben am: Di 6.05.2008, 23:01
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 631
Mitglied seit: 28.03.2004


Hallo

Brauche mal wieder Hilfe für eine MSSQL-Abfrage. Ich möchte mit der untenstehenden Abfrage als Ergebnis alle Datensätze bekommen, die zwischen "Jetzt" und "Jetzt minus einem Tag" sind. Das Feld enddate ist das Datumsfeld im Format "2008-01-02 11:18:00.000".

CODE
SELECT idl, enddate FROM ac_auctions WHERE enddate < DATEADD(dd, -1, GETDATE())


Bisher habe ich bei meinem Versuchen entweder keine Datensätze bekommen oder alle möglichen. Jemand eine Idee, wie ich die entsprechenden Ergebnisse erhalte?

Danke und Gruss
Roland


--------------------
www.linkit.ch - Das Webverzeichnis mit Links aus dem Deutschsprachigen Raum.
www.powerplay.ch - Die Hockeyquiz-Page
www.bebelino.ch - Onlineshop für Baby- und Kinder-Produkte
Top
PMEmail Poster
Top
 
 
TSc
#2 Geschrieben am: Mi 7.05.2008, 05:37 (+06:36)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 545
Mitglied seit: 8.11.2004


Entweder so:
CODE
SELECT idl, enddate FROM ac_auctions WHERE enddate > DATEADD(dd, -1, GETDATE())

oder sauberer:
CODE
SELECT idl, enddate FROM ac_auctions WHERE enddate BETWEEN DATEADD(dd, -1, GETDATE()) AND GETDATE()


Testen kann ich MSSQL erst auf der Arbeit, daher keine 100% Gewähr...

Gruß,
Tom


--------------------
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#3 Geschrieben am: Mi 7.05.2008, 11:06 (+05:29)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2078
Mitglied seit: 4.02.2006


QUOTE (Webi @ Di 6.05.2008, 23:01)
Das Feld enddate ist das Datumsfeld im Format "2008-01-02 11:18:00.000".
...
CODE
SELECT idl, enddate FROM ac_auctions WHERE enddate < DATEADD(dd, -1, GETDATE())

...
Bisher habe ich bei meinem Versuchen entweder keine Datensätze bekommen oder alle möglichen.

Im Prinzip ist der Code richtig, abgesehen von der falschen Richtung '<'.

Allerdings kennt MSSql kein Format für Datumsfelder. Das Format wird erst bei der Ausgabe festgelegt.

Deshalb: Ist das aus Versehen ein nvarchar(20) o.ä.? Das würde nämlich das etwas merkwürdige Resultat erklären, da dann effektiv ein Stringvergleich gemacht worden wäre - mit nicht so sinnvollen Ergebnissen.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten: Web-Datenbanken als Online - CRM - Lösung.
Konzentrieren Sie sich auf Ihr Kerngeschäft - nutzen Sie eine schlanke, schnelle Online-Datenbank von verschiedenen Standorten.
Top
PMEmail PosterUsers Website
Top
 
Webi
#4 Geschrieben am: Mi 7.05.2008, 11:22 (+00:15)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 631
Mitglied seit: 28.03.2004


@jauer

Heisst dies, dass das Datum vor dem Vergleich in einen String umgewandelt wird und dadurch beim Resultat dann entweder kein Datensatz rauskommt oder alle möglichen? Verstehe ich dies richtig? Und falls ja, wie kann ich dies umgehen?


--------------------
www.linkit.ch - Das Webverzeichnis mit Links aus dem Deutschsprachigen Raum.
www.powerplay.ch - Die Hockeyquiz-Page
www.bebelino.ch - Onlineshop für Baby- und Kinder-Produkte
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#5 Geschrieben am: Mi 7.05.2008, 15:36 (+04:14)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2078
Mitglied seit: 4.02.2006


QUOTE (Webi @ Mi 7.05.2008, 11:22)
Heisst dies, dass das Datum vor dem Vergleich in einen String umgewandelt wird und dadurch beim Resultat dann entweder kein Datensatz rauskommt oder alle möglichen? Verstehe ich dies richtig? Und falls ja, wie kann ich dies umgehen?


Wenn das Feld 'enddate' vom Datentyp nvarchar / varchar / char ist, dann wird das Ergebnis von DateAdd implizit in einen String umgewandelt und es werden die Strings miteinander verglichen. U.a. mit dem Problem, daß das Ergebnis von DateAdd womöglich als 'May 7 2008 4:34PM' ausgegeben wird. Daß nun Textvergleiche etwas schräg werden, dürfte klar sein.

Wenn das Feld 'enddate' vom korrekten Datentyp DateTime (oder smalldatetime) ist, dann werden Datumsangaben miteinander verglichen (intern faktisch Dezimalzahlen: Der Ganzzahlanteil bestimmt das Datum, der Dezimalteil die Uhrzeit).

Deshalb: Innerhalb vom MS-SqlServer ist diese Aussage

QUOTE
Das Feld enddate ist das Datumsfeld im Format "2008-01-02 11:18:00.000".


unsinnig, falls das Feld 'enddate' ein Datetime-Format hat. Ich meine aber, das schon bei PHP-Code gesehen zu haben, daß Datumsangaben als Stringfelder abgespeichert und dann per Textvergleich ausgewertet werden.

Da Du oben das Format angegeben hast, hört sich das für mich nach so einer Tradition an. Damit ist mir nicht klar: Welches Format hat 'enddate'?


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten: Web-Datenbanken als Online - CRM - Lösung.
Konzentrieren Sie sich auf Ihr Kerngeschäft - nutzen Sie eine schlanke, schnelle Online-Datenbank von verschiedenen Standorten.
Top
PMEmail PosterUsers Website
Top
 
Webi
#6 Geschrieben am: Mi 7.05.2008, 22:38 (+07:01)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 631
Mitglied seit: 28.03.2004


Das Feld enddate ist vom Datentyp DateTime.
Die Abfrage von Tom hat mein Problem gelöst. Es werden nun die richtigen Ergebnisse angezeigt. Danke!

Gruss
Roland


--------------------
www.linkit.ch - Das Webverzeichnis mit Links aus dem Deutschsprachigen Raum.
www.powerplay.ch - Die Hockeyquiz-Page
www.bebelino.ch - Onlineshop für Baby- und Kinder-Produkte
Top
PMEmail Poster
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/24326

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
MySQL-Abfrage optimieren Logigoo 204 6 Do 26.06.2008, 12:41
MySQL-Abfrage geht nicht? pl_90 334 18 Mo 26.05.2008, 13:37
Access Abfrage Auto Increment Big Rob 123 2 Mi 12.03.2008, 16:41
MySQL-Abfrage: Mit oder ohne "JOIN" cr4m0 201 6 Mo 10.03.2008, 16:16
Migration von MSSQL nach MySQL sigma-ws 108 2 Mo 11.02.2008, 15:42
SQL Abfrage milkboy 151 4 So 6.01.2008, 13:58
Problem bei Abfrage aus MySQL TTlong 255 10 Di 1.01.2008, 20:33
IP Abfrage G.P. 226 13 So 30.12.2007, 20:26
stored procedure mssql spaceman007 335 1 Di 11.12.2007, 14:56
Datenbank Abfrage wer ist Online Brian Folte 301 7 Fr 19.10.2007, 13:00




Anzeige - [Interessiert an einer Anzeige?]



Anzeigen




cyon Webhosting



[Interessiert an einer Anzeige?]