Index auf Datum und Uhrzeit [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Index auf Datum und Uhrzeit [ERLEDIGT]
Hi,
mal wieder eine Frage zum Philosophieren.
Eine DB hat ein Datumsfeld "datum","D",8,0
und ein Feld für die Uhrzeit "zeit","C",8,0 (Format "HH:MM:SS")
ein Index auf das Datum ist klar -> DTOS(datum).
Was meint ihr, ob und wo man bei der Zeit aufpassen muß, wenn diese mit in den Index kommen soll? Es soll eigentlich nur dem feineren Unterscheidung dienen, sprich bei gleichem Datum wird eben noch die Zeit hinzugenommen, damit wirklich klar wird, wer an 1.Stelle steht und wer danach kommt. Beim Vergleich ist es auch klar: Die Punkte zwischen den Stunde, Minuten und Sekunden werden entfernt und es wird aus DTOS(datum) + Charrem(":",zeit) ein String gebaut.
mal wieder eine Frage zum Philosophieren.
Eine DB hat ein Datumsfeld "datum","D",8,0
und ein Feld für die Uhrzeit "zeit","C",8,0 (Format "HH:MM:SS")
ein Index auf das Datum ist klar -> DTOS(datum).
Was meint ihr, ob und wo man bei der Zeit aufpassen muß, wenn diese mit in den Index kommen soll? Es soll eigentlich nur dem feineren Unterscheidung dienen, sprich bei gleichem Datum wird eben noch die Zeit hinzugenommen, damit wirklich klar wird, wer an 1.Stelle steht und wer danach kommt. Beim Vergleich ist es auch klar: Die Punkte zwischen den Stunde, Minuten und Sekunden werden entfernt und es wird aus DTOS(datum) + Charrem(":",zeit) ein String gebaut.
Zuletzt geändert von Manfred am Di, 25. Nov 2008 14:20, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
da Deine Uhrzeit ein Zeichenfeld ist, weiß ich nicht, warum Du unbedingt die Trenner rausschmeissen willst?
Viele Grüße,
Martin
da Deine Uhrzeit ein Zeichenfeld ist, weiß ich nicht, warum Du unbedingt die Trenner rausschmeissen willst?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
das habe ich deshalb gemacht, weil ich beim Zusammenbau dann 2 Werte als Zahl vergleichen kann.
Grob dargelegt: If eine Zeit größer als die andere Zeit, dann prima, oder eben nicht. Erschien mir bisher immer recht logisch. Oder gibt es da auch noch einen anderen Trick, den ich bisher nicht erkannt habe? Einfach aus den beiden Strings wieder eine Zahl machen, die dann verglichen, oder abgezogen werden kann.
das habe ich deshalb gemacht, weil ich beim Zusammenbau dann 2 Werte als Zahl vergleichen kann.
Grob dargelegt: If eine Zeit größer als die andere Zeit, dann prima, oder eben nicht. Erschien mir bisher immer recht logisch. Oder gibt es da auch noch einen anderen Trick, den ich bisher nicht erkannt habe? Einfach aus den beiden Strings wieder eine Zahl machen, die dann verglichen, oder abgezogen werden kann.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Ja gutte,
das gilt doch dann aber nur bei == oder <>, oder?
Wenn ich doch herausfinden will, was denn jetzt älter oder jünger ist, dann muß ich doch abziehen und das geht doch nur mit Zahlen und nicht mit Character.
das gilt doch dann aber nur bei == oder <>, oder?
Wenn ich doch herausfinden will, was denn jetzt älter oder jünger ist, dann muß ich doch abziehen und das geht doch nur mit Zahlen und nicht mit Character.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Gerd,
also direkt schon konvertiert wegschreiben in die DB. Hm, dann muß aber jedesmal beim Lesen und Schreiben daran gedacht und gewandelt werden.
also direkt schon konvertiert wegschreiben in die DB. Hm, dann muß aber jedesmal beim Lesen und Schreiben daran gedacht und gewandelt werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Wolfgang,
das habe ich schon gemacht. Aber wie gesagt es geht um den kompletten String Datum + Uhrzeit, sonst muß man doch 2x vergleichen.
Aber meine eigentlich Frage sollte dahin zielen, ob es vernünftig ist die Zeit als Wert mit : Trenner in die DB und somit in einen Index zu schreiben, bzw. ob vielleicht jemand damit entsprechende Erfahrung gemacht hat, das er sagen könnte, alles klar, aber da oder dort muß man aufpassen.
Dass scheint aber wohl nicht der Fall zu sein.
das habe ich schon gemacht. Aber wie gesagt es geht um den kompletten String Datum + Uhrzeit, sonst muß man doch 2x vergleichen.
Aber meine eigentlich Frage sollte dahin zielen, ob es vernünftig ist die Zeit als Wert mit : Trenner in die DB und somit in einen Index zu schreiben, bzw. ob vielleicht jemand damit entsprechende Erfahrung gemacht hat, das er sagen könnte, alles klar, aber da oder dort muß man aufpassen.
Dass scheint aber wohl nicht der Fall zu sein.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Thomas,
das dürfte als Sortierkriterium in die Hose gehen. DTOC(datum) gibt z.B. "16.01.2007" zurück und damit hast Du ein Problem mit dem 16.01.2006. Bei DTOS(datum) wird daraus 20070116 und dann steht der 20060116 ganz woanders. Ich schätze mal, Du meintest aber wohl DTOS() ?
das dürfte als Sortierkriterium in die Hose gehen. DTOC(datum) gibt z.B. "16.01.2007" zurück und damit hast Du ein Problem mit dem 16.01.2006. Bei DTOS(datum) wird daraus 20070116 und dann steht der 20060116 ganz woanders. Ich schätze mal, Du meintest aber wohl DTOS() ?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Index auf Datum und Uhrzeit
hi,
Damit kann du theoretisch auch bis zu 1/100 Sec. unterschiedem was
z.B. bei Videoschnitt wichtig ist um genau "das" Bild zu treffen wo der
"Schnitt" anfangen/enden soll.
Deshalb statt TIME() dan SECONDS() verwenden. Die Darstellung von
SECONDS() als "TIME" sollte kein Problem sein.
gruss by OHR
Jimmy
also wenn du mit "Zeit" rechnen willst, würde ich SECONDS() nehmen.Manfred hat geschrieben: Eine DB hat ein Datumsfeld "datum","D",8,0
und ein Feld für die Uhrzeit "zeit","C",8,0 (Format "HH:MM:SS")
Damit kann du theoretisch auch bis zu 1/100 Sec. unterschiedem was
z.B. bei Videoschnitt wichtig ist um genau "das" Bild zu treffen wo der
"Schnitt" anfangen/enden soll.
Deshalb statt TIME() dan SECONDS() verwenden. Die Darstellung von
SECONDS() als "TIME" sollte kein Problem sein.
gruss by OHR
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Manfred,
wegen dem Vergleich ist es egal ob du den Trenner ausnimmst, es spart halt nur 2 Byte je Datensatz und das kann sich lohnen.
Es macht auch dahingehend Sinn, weil der Trenner eventuell in anderen Ländern andere Zeichen verwendet, dann muss man aber anders zusammenbauen ...
Kleiner ist früher:
'20071504141312' < '20071504141313'
gleiches Ergebnis wie
'2007150414:13:12' < '2007150414:13:13'
Beim Vergleichen macht es also keinen Unterschied !
Ein Zahlenvergleich könnte aber wieder ein Genauigkeitsproblem bekommen (jetzt sind es schon 14 Stellen), daher würde ich den Stringvergleich vorziehen. So spart man sich auch 2 Konvertierungen.
wegen dem Vergleich ist es egal ob du den Trenner ausnimmst, es spart halt nur 2 Byte je Datensatz und das kann sich lohnen.
Es macht auch dahingehend Sinn, weil der Trenner eventuell in anderen Ländern andere Zeichen verwendet, dann muss man aber anders zusammenbauen ...
Kleiner ist früher:
'20071504141312' < '20071504141313'
gleiches Ergebnis wie
'2007150414:13:12' < '2007150414:13:13'
Beim Vergleichen macht es also keinen Unterschied !
Ein Zahlenvergleich könnte aber wieder ein Genauigkeitsproblem bekommen (jetzt sind es schon 14 Stellen), daher würde ich den Stringvergleich vorziehen. So spart man sich auch 2 Konvertierungen.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hm,
jetzt bin ich überfordert. Wieso klappt es denn so, oder so? Das verstehe ich jetzt nicht. Ich glaube es ja (ohne es getestet zu haben), aber ich habe keine Erklärung dafür, warum es so ist. Auf den 1.Blick würde ich es nicht vermuten, dass man trotz Trennzeichen diesen Vergleich starten kann, als wäre es ein rein numerischer Wert.
jetzt bin ich überfordert. Wieso klappt es denn so, oder so? Das verstehe ich jetzt nicht. Ich glaube es ja (ohne es getestet zu haben), aber ich habe keine Erklärung dafür, warum es so ist. Auf den 1.Blick würde ich es nicht vermuten, dass man trotz Trennzeichen diesen Vergleich starten kann, als wäre es ein rein numerischer Wert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Manfred,
was ist den der Unterschied von einem Stringvergleich zu einem Zahlenvergleich ?
Ein Stringvergleich vergleicht von Links jede Stelle mit der gleichen Stelle im anderen.
Ein Zahlenvergleich berücksichtigt die Wertigkeit der Stellen.
Sobald beide Vergleichsausdrücke gleich lang sind (wie Tom schon bemerkte), gibt es (außer mehr Zeichen) keinen Unterschied:
'20071504141312'
ist kleiner als
'20071504141313'
genauso wie
20071504141312
ist kleiner als
20071504141313
Nur wenn unterschiedlich lange Strings verglichen werden gibt es Unterschiede zum Zahlenvergleich; wobei Clipper und Xbase da noch eine Besonderheit haben (rechter String gibt die Vergleichslänge vor ...):
'92'
ist größer als
'12345'
aber
92
ist kleiner als
12345
daher muss man Zahlen in Stings notfalls links auffüttern, damit ein Stringvergleich stimmt:
'00092'
ist kleiner als
'12345'
was ist den der Unterschied von einem Stringvergleich zu einem Zahlenvergleich ?
Ein Stringvergleich vergleicht von Links jede Stelle mit der gleichen Stelle im anderen.
Ein Zahlenvergleich berücksichtigt die Wertigkeit der Stellen.
Sobald beide Vergleichsausdrücke gleich lang sind (wie Tom schon bemerkte), gibt es (außer mehr Zeichen) keinen Unterschied:
'20071504141312'
ist kleiner als
'20071504141313'
genauso wie
20071504141312
ist kleiner als
20071504141313
Nur wenn unterschiedlich lange Strings verglichen werden gibt es Unterschiede zum Zahlenvergleich; wobei Clipper und Xbase da noch eine Besonderheit haben (rechter String gibt die Vergleichslänge vor ...):
'92'
ist größer als
'12345'
aber
92
ist kleiner als
12345
daher muss man Zahlen in Stings notfalls links auffüttern, damit ein Stringvergleich stimmt:
'00092'
ist kleiner als
'12345'
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
naja,
und um diese Probleme zu umgehen, habe ich halt alles in Zahlen umgewandelt. Das klappt direkt und ich muß mir keinen Kopf machen, warum ich denn nun schon wieder etwas anderes bekomme als ich erwartet habe. Aber trotzdem Danke für den kleinen Exkurs.
und um diese Probleme zu umgehen, habe ich halt alles in Zahlen umgewandelt. Das klappt direkt und ich muß mir keinen Kopf machen, warum ich denn nun schon wieder etwas anderes bekomme als ich erwartet habe. Aber trotzdem Danke für den kleinen Exkurs.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
wann hast Du das denn in Zahlen umgewandelt?
Hoffentlich, nachdem Du Datum und Uhrzeit aneinandergehangen hast
Viele Grüße,
Martin
wann hast Du das denn in Zahlen umgewandelt?
Hoffentlich, nachdem Du Datum und Uhrzeit aneinandergehangen hast
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
jaja, doof kann man sein, aber pfiffig.
VAL(DTOS(datum) + CHARREM(":",zeit))
so habe ich es ja auch am Anfang hier geschrieben.
jaja, doof kann man sein, aber pfiffig.
VAL(DTOS(datum) + CHARREM(":",zeit))
so habe ich es ja auch am Anfang hier geschrieben.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
STRZERO(SECONDS(),8,2) das ist international und auf 1/100 Sekunden
genau ( wenn du was vergleichen willst ...)
gruss by OHR
Jimmy
tja die Amis haben doch am/pm ... also doch statt TIME() dann vielleichtbrandelh hat geschrieben: Es macht auch dahingehend Sinn, weil der Trenner eventuell in anderen Ländern andere Zeichen verwendet ...
STRZERO(SECONDS(),8,2) das ist international und auf 1/100 Sekunden
genau ( wenn du was vergleichen willst ...)
gruss by OHR
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Höhö,
wenn ich mal so weit bin, dass meine Programme im Ausland benutzt werden, dann werde ich ein Faß aufmachen.
wenn ich mal so weit bin, dass meine Programme im Ausland benutzt werden, dann werde ich ein Faß aufmachen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!