AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FB: Unique Index auf Datum und Uhrzeit

FB: Unique Index auf Datum und Uhrzeit

Ein Thema von hoika · begonnen am 31. Jan 2018 · letzter Beitrag vom 3. Feb 2018
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 31. Jan 2018, 22:10
Hallo,
ah so, von der Seite gehst Du ran.
Also eigentlich dem Date als Fließkomma-Zahl prinzipiell misstrauen und alles auf Integer aufbauen.

Sekunden kann ich schon mal ausschließen, bleibt also Minutenzahl also:
1440 Minuten pro Tag übrig
60 min pro 1 h * 24 (24h pro Tag), also 60*24

Oh Mann, muss man wirklich so einen Murks wegen einem Unique Index auf Date machen ??? *wunder*
Heiko
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#2

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 31. Jan 2018, 23:01
Uhrzeit := Trunc((TDateTime - Trunc(TDatetime)) / (1 / 1440))

Mal aufgebröselt:

Datum := Trunc(TDateTime)
TagesAnteil := TDateTime - Datum
EineMinute := 1 / 1440
Uhrzeit := Trunc(TagesAnteil / EineMinute)

Datum würde hier dann die Anzahl der Tage (seit 30.12.1899) als Integer enthalten und Uhrzeit den Tagesanteil in Minuten als Integer.

Hoffentlich hab' ich jetzt keine zu großen Denkfehler gemacht.

Geändert von Delphi.Narium (31. Jan 2018 um 23:11 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 31. Jan 2018, 23:53
Hallo,
kommt so im etwa hin.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.251 Beiträge
 
Delphi 12 Athens
 
#4

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 1. Feb 2018, 06:51
Du hast diesen Aspekt zwar nicht angesprochen, aber als Anregung:
1) Ein unique-Index, zu dem es in der Wirklich keine unique-Eigenschaft gibt, ist ein Design Flaw.
2) Ein unique-Index auf ein Datum/Zeit Attribut verbirgt meistens ein Designproblem.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 1. Feb 2018, 07:29
Noch 2 Anmerkungen:
Ein Date Field mit Date und Time Anteil kann man auch unter Verwendung des Index auf Date abfragen indem man <between :gewünschtesDate and :gewünschtesDate+1 verwendet (Der Parameter darf natürlich dann keinen Timeanteil enthalten), analog mit >< Operatoren.
Gibt es den Bedarf auch reine Time Werte derart abzufragen, sieht es allerdings nicht so gut aus.
Ob es dann für das Time Abfrage Problem Anwendungsfälle gibt, sei mal dahin gestellt.

Neben den rechnerischen Verfahren für exakte DateTime Werte von Delphi.Narium kann man auch Textkonvertierung mit Cast nutzen oder mit AddDate (.. Intervall) arbeiten.

Diese Möglichkeiten bestehen hoffentlich auch im alten Dialekt.
Gruß, Jo
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 1. Feb 2018, 08:45
Hallo,
Zitat:
TigerLilly
Es geht hier nicht ausschließlich um Datum/Uhrzeit,
sondern das sind zusätzliche Felder, die zusammen mit einem anderen Integer-Feld einen eindeutigen Wert erzeugen sollen.

Zitat:
Textkonvertierung mit Cast
Und damit entfällt das Suchen per Index. Das genau will ich nicht.
Das mit dem Between oder >= <= ist schon klar.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 1. Feb 2018, 08:56
Und wenn man einfach ein neues Feld mit dem "abgeschnittenen" Datum anlegt, das per Trigger befüllt/aktualisiert wird? Das könnte dann VARCHAR oder INT sein, den Index legt man dann auf dieses Feld, so wie man das früher z.B. für einen case-insensitiven UNIQUE-Index auf VARCHAR-Felder machen musste.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 1. Feb 2018, 09:22
Zitat:
Textkonvertierung mit Cast
Und damit entfällt das Suchen per Index. Das genau will ich nicht.
Da hab ich mich nicht verständlich ausgedrückt. Ich meinte die Befüllung der Werte.
Ob die per Mathematik zugeschnitten werden (wenn sie eh als Zahl reinkommen) oder mit Textfunktionen (wenn sie bspw. aus einem Textedit stammen oder einer Komponenten, die auch Stringausgabe liefert), sie landen in der gewünschten Genauigkeit in der Spalte und sind in diesem Range dann eindeutig und bieten das Datenmaterial für einen Unique/Primary Constraint (ob jetzt mit oder ohne andere Spalten)

Das Problem der Un-/Wirksamkeit des Index gilt erst bei der Abfrage, wenn dort bspw. auf der Spalte gecastet wird oder mit anderen Funktionen rumgesäbelt wird.
Erlaubt und sinnvoll ist die Anwendung von Funktionen natürlich wieder auf Parameter Seite.
(Indexwirksamkeit hat natürlich gar nichts mit dem Unique Constraint zu tun, sollte aber immer berücksichtigt werden.)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 31. Jan 2018, 23:16
Oh Mann, muss man wirklich so einen Murks wegen einem Unique Index auf Date machen ??? *wunder*
Kommt darauf an welcher zeitlicher Abstand minimal zwischen zwei Einträgen liegen kann. Wenn die Auflösung des Datentyps kleiner als der minimale Abstand der Einträge ist, solltest Du keine Probleme haben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#10

AW: FB: Unique Index auf Datum und Uhrzeit

  Alt 31. Jan 2018, 23:32
Wenn die kleinste Auflösung Minuten sein soll, dann kann ich bei 'nem Floatwert innerhalb einer Minute noch ein paar tausend Floatwerte bekommen, die innerhalb dieser Minute liegen. Mein Index bleibt aber weiterhin eindeutig.

Wenn ich die Uhrzeit als Float habe, aber die Eindeutigkeit auf maximal einem Satz pro Minute liegen soll, komme ich nicht ohne Rechnerei (Datenmanipulation, Umrechnung ...) aus.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz