AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage Formulieren! Hilfe...
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage Formulieren! Hilfe...

Ein Thema von celinaw · begonnen am 26. Apr 2004 · letzter Beitrag vom 30. Apr 2004
Antwort Antwort
Seite 2 von 2     12   
Robert_G
(Gast)

n/a Beiträge
 
#11

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 07:22

Das hatte ich wohl gestern abend nach 5 1/2 h ICE-Fahrt falsch verstanden.
Sorry, falls es zu barsch klang...
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#12

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 12:39
Hi Delphi_fanatic,

Zitat:
Also nochmal : Windows verwaltet das Datum intern als Integer.
ich glaube das nicht.

Zitat:
Kannst Du ganz leicht ausprobieren : Starte Excel, gib' in irgendeine Zelle das heutige Datum ein - den
29.04.2004 - und dann Pulldown-Menü 'Format / Zellen' und klick da auf Zahl.
Dann siehst Du in dieser Excel-Zelle die windows-interne Ganz-Zahl, die für den 29.04.2004 steht,
nämlich 38106.
Gib in Excel mal "29.4.2004 10:23" ein und ändere das Format, und Du bekommst einen Floatwert. Wenn Du nur ein Datum eingibst speichert Excel die Uhrzeit 00:00 und stellt den Zahlenwert als Int dar.

Klar, der Vorkommateil ist das Datum und durch eine Umwandlung von Float in Int hast Du das Datum. Die interne Verwaltung bleibt trotzdem ein Float, bei dem eben der Nachkommateil die Uhrzeit darstellt.

Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#13

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 13:08
@Delphi_Fanatic: Du solltest vorsichtig mit allgemeingültigen Aussagen wie:
Zitat:
und das Du locker im Zusammenhang mit SQL-Queries verwenden kannst. Jedenfalls bei Microsoft-Datenbanken wie Access.
sein, da der MSSQL-Server eben einen anderen (+2Tage) Datetime-Startwert oder Ausgangspunkt hat als MS-Windows und somit Probleme bei Deinem vorgeschlagenen Weg unausweichlich sind.

Man kann mit Datumswerten in der von Dir genannten Weise operieren, allerdings sollte man eben genau wissen, was intern abgeht.

Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 13:39
Hallo,

das Datum wird bei allen Datenbanken und bei Windows als Fließkommazahl behandelt, da sonst kein Zeitanteil mit übergeben werden kann.

Zitat von nieurig:
Wenn Du Parameter verwendest kümmert sich Delphi drum.
Das stimmt so nicht.

Ich habe mir dafür extra Funktionen geschrieben, die das Datum in die entsprechende Schreibweise für die verschiedenen DB's umwandelt.

@celinaw
Folgendes sollte funktionieren:
Delphi-Quellcode:
function FmtDateMySQL(const aDate:TDateTime; const withTime:Bool=False);
var t, m, j, std, min, sek, hs:Word;
begin
  DecodeDate(aDate, j, m, t);
  if (withTime)
  begin
    DecodeTime(aDate, std, min, sek, hs);
    Result:=Format('%d-%0.2d-%0.2d %0.2d:%0.2d:%0.2d', [j, m, t, std, min, sek]);
  end else Result:=Format('%d-%0.2d-%0.2d', [j, m, t]);
end; // FmtDateMySQL
Für Dein Beispiel:
Delphi-Quellcode:
qryMain.Parameters[0].Value := FmtDateMySQL(StrToDate(EdBegenn.Text));
qryMain.Parameters[1].Value := FmtDateMySQL(StrToDate(EdEnde.Text));
  Mit Zitat antworten Zitat
Delphi_Fanatic

Registriert seit: 24. Mär 2004
201 Beiträge
 
#15

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 13:54
@Leueselator :

Zitat:
sein, da der MSSQL-Server eben einen anderen (+2Tage) Datetime-Startwert oder Ausgangspunkt hat als MS-Windows und somit Probleme bei Deinem vorgeschlagenen Weg unausweichlich sind.
MS SQL-Server ist weder von mir, noch vom Thread - Eröffner explizit erwähnt worden.
Trotzdem würde mich jetzt mal interessieren :
An welcher Stelle wird denn diese '+2-Konvertierung' automatisch vorgenommen, wenn man einen Datums-Wert an einen query.parameter übergibt ?

Zitat:
allerdings sollte man eben genau wissen, was intern abgeht.
Ich lasse mich gerne 'eines Besseren belehren', aber Tatsache ist doch, dass der Datums-Integer, der im Delphi-Programm abgegriffen wird, definitiv immer derselbe ist. Egal, ob man ihn nach der von mir beschriebenen Möglichkeit oder nach irgendeiner anderen Möglichkeit abgreift.

Die Quelle bzgl. dieses Datums-Wertes ist in jedem Falle doch dieselbe. Lediglich das Ziel war bei mir ein Anderes : Ich wollte den Datums-Integer direkt in SQL.Text reinschreiben, Du wolltest den Weg über Query.Parameter gehen.

Also wenn bei der Benutzung von Query.Parameter automatisch irgendwo diese +2-Konvertierung statt findet - dann hättest Du natürlich recht... ansonsten müßtest Du diese Konvertierung doch bei beiden Methoden machen ...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#16

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 14:11
Zu einer vernünftigen DB, gibt es vernünftige native Zugriffsmöglichkeiten oder OLE DB Treiber.
Diese wandeln das Datum entsprechend um. Während der MS SQL Svr irgendwann 1899 oder so anfängt macht es Oracle ähnlich wie .Net (nur das es ein Byte pro Segment bzw. Integer für das Jahr ist).
Wichtig ist doch dabei nur, dass hinten das rauskommt, was verlangt wird...

Ich glaube Gollum hat schon eine Lösung für Celinas Problem gepostet.
Auch wenn ich es generell für nicht sinnvoll halte in einem Datum mit dem Like operator zu suchen. (Es wird in 90% aller Anfragen nach irgendwelchem Käse gesucht und gefunden werden die Löcher )

Diese ganze Integer/Double/DateTime-Diskussion war wohl schon OT & aussichtslos als sie angefangen hatte...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#17

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 29. Apr 2004, 14:15
Zitat von Robert_G:
...war wohl schon OT & aussichtslos als sie angefangen hatte...
Und darum bitte ich alle sich wieder direkt mir der Frage zu beschäftigen und, wenn es denn notwendig ist, für diese Diskussion einen entsprechenden Thread zu starten.

Danke
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#18

Re: SQL Abfrage Formulieren! Hilfe...

  Alt 30. Apr 2004, 00:04
Hi

Nach langem ausprobieren hab ich es endlich hin bekommen

Ich habe mehrere Lösungen ausprobiert!

Das von Mikhal funktioniert nur wenn man im Editfeld das Datum wie folgt schreibt: 2004-04-24
Zitat:
'WHERE T.FIRST_EVENT BETWEEN ' + StrToDate(EdBegenn.Text) + ' AND ' + StrToDate(EdEnde.Text)

Was bissher Problemlos läuft ist der Code von Gollum!
Zitat:
function FmtDateMySQL(const aDate:TDateTime; const withTime:Bool=False);
var t, m, j, std, min, sek, hs:Word;
begin
DecodeDate(aDate, j, m, t);
if (withTime)
begin
DecodeTime(aDate, std, min, sek, hs);
Result:=Format('%d-%0.2d-%0.2d %0.2d:%0.2d:%0.2d', [j, m, t, std, min, sek]);
end else Result:=Format('%d-%0.2d-%0.2d', [j, m, t]);
end; // FmtDateMySQL


Ich hatte nur so einige Probleme mit den Parametern. Habs aber dann nach einigem lesen und probieren hin bekommen.


Euch allen kann ich nur sagen:

Vielen Vielen Dank für die Hilfe


Gruß Celina
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz