Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
Diskussion

MSSQL Abfrage

Webi
Geschrieben am: Di 6.05.2008, 23:01
Report PostQuote Post

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

Gruppe: Member (aktiv)
Beiträge: 681
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


--------------------
Top
PMEmail Poster
Top
 
 
TSc
#2 Geschrieben am: Mi 7.05.2008, 05:37 (+06:36)
Report PostQuote Post

AyomRank 7
**************

Gruppe: Member (aktiv)
Beiträge: 1121
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


--------------------
---~~~ Meine zwei güldenen Regeln zu nachhaltigem SEO ~~~---
1. Google mag was der User mag.
2. Content ist King!

Ferienhaus in der Eifel
Top
PMEmail Poster
Top
 
Jürgen Auer
Server-Daten - Online-CRM-Lösungen
#3 Geschrieben am: Mi 7.05.2008, 11:06 (+05:29)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 3274
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 - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
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: 681
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?


--------------------
Top
PMEmail Poster
Top
 
Jürgen Auer
Server-Daten - Online-CRM-Lösungen
#5 Geschrieben am: Mi 7.05.2008, 15:36 (+04:14)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 3274
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 - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
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: 681
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


--------------------
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 Update-Befehl auf Basis Erg. SELECT Abfrage? Claus Lehmann 190 4 Mi 3.03.2010, 12:27
Abfrage einer MySQL Datenbank webdoktor 279 10 Fr 8.01.2010, 18:11
SQL Abfrage von Inhalt einer anderen Tabelle webdoktor 372 11 Do 19.11.2009, 10:43
Intelligente MySQL Abfrage Sancheck 292 6 Sa 14.11.2009, 22:10
MySQL Abfrage G.P. 327 5 Fr 3.07.2009, 16:31
PHP-mySQL: Abfrage - GROSS/kleinschreibweise radarin 282 2 Mi 3.06.2009, 20:43
Hilfe, SQL Abfrage Siegfried_D 224 3 Mo 5.01.2009, 03:36
Problem MySQL-Abfrage Magical 365 2 Mo 15.12.2008, 07:48
SQL Abfrage für OS Commerce Siegfried_D 501 5 Do 13.11.2008, 22:58
MySQL Abfrage von einer Tabelle webdoktor 547 19 Sa 9.08.2008, 17:45




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]