Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FreePascal Wie am besten ein Datum und eine Uhrzeit in der DB speichern? (https://www.delphipraxis.net/182827-wie-am-besten-ein-datum-und-eine-uhrzeit-der-db-speichern.html)

AlexII 20. Nov 2014 20:52

AW: Wie am besten ein Datum und eine Uhrzeit in der DB speichern?
 
Zitat:

Zitat von jobo (Beitrag 1280543)
Zitat:

Zitat von himitsu (Beitrag 1280542)
Kommt drauf an, welche ISO-Norm man hier anwendet. :angel:

Ich dachte wir hätten uns demokratisch auf 8601 geeinigt
;)


Man muss sich für das richtige! entscheiden und nicht für das der Masse. Die Mehrheit irrt sich oft. :wink: Aber ich diesem Fall ist alles ok! :-D

Dejan Vu 21. Nov 2014 01:31

AW: Wie am besten ein Datum und eine Uhrzeit in der DB speichern?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1280502)
Alle anderen Punkte (Filtern/Teile/...) lässt sich prima mit dem ISO-Format machen.

Wie genau würde ein SELECT für 'zwischen 10:00' und '13:00' aussehen? Also, das es 'prima' ist? Ich würde -allgemein gesehen- eher überlegen, welche Abfragen zu erwarten sind. Es wäre nämlich auch denkbar, Datum und Uhrzeit getrennt abzulegen. Dies ist sinnvoll, wenn ich immer nur ganze Tage betrachten will (auch als Zeitraum) und vielleicht separat noch die Uhrzeit (Schichtbetrieb, Arbeitszeit etc.) Weiterhin bietet das reine Datum noch die Möglichkeit, die Tabelle mit einer date dimension table zu verknüpfen, was komplexeren Auswertungen Tür und Tor öffnet.

Platz spielt im Jahr 2014 und angesichts von GB-Telefonen und TB-Festplatten keine primäre Rolle mehr: Klar, zu verschwenderisch sollte man damit nicht umgehen, aber ob ich für ein Datum 4, 6, 8 oder wasweißich 24 Bytes belege, ist -zumal wir von SQLite reden- nicht weltherrschaftsentscheidend.

Phoenix 21. Nov 2014 07:04

AW: Wie am besten ein Datum und eine Uhrzeit in der DB speichern?
 
Zitat:

Zitat von AlexII (Beitrag 1280490)
Ok... dann lässt sich wohl auch die Suche in dem DateTime Feld realisieren, muss nur rausfinden wie. ))

Ist relativ einfach:

Code:
SELECT Col1, Col1
FROM MyTable
WHERE DateField >= '2014-11-21 06:00';

-- oder

SELECT Col1, Col1
FROM MyTable
WHERE DateField BETWEEN '2014-11-01 06:00' AND '2014-11-05 18:00';
Eine Sache solltest Du Dir vorher noch überlegen: Könntest Du, möglicherweise, unter irgendwelchen Umständen, vielleicht, mal auf die Idee kommen, zum einen unterschiedliche Zeitzonen zu bearbeiten? Oder musst Du die Einträge in der doppelten Stunde bei einer Zeitumstellung auf Winterzeit (also zwischen 2 und 3 Uhr an einem Sonntag) in die richtige Reihenfolge bringen können? Also willst Du bei zwei Einträgen um jeweils 02:15 Uhr wissen, welches der beiden 02:15 vor oder nach der Zeitumstellung war?

Falls Du eines der beiden mit Ja beantworten kannst, dann solltest Du alle Zeiten vor der Ablage in der Datenbank in UTC konvertieren. Dann musst Du zwar die Daten vor der Anzeige immer wieder in lokale Zeit umrechnen, aber dafür gibt es in den DateUtils ein paar passende Funktionen, die das recht einfach machen. Der Vorteil ist halt, dass Du immer genau weisst, was da in der DB steht.

Bernhard Geyer 21. Nov 2014 08:01

AW: Wie am besten ein Datum und eine Uhrzeit in der DB speichern?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1280558)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1280502)
Alle anderen Punkte (Filtern/Teile/...) lässt sich prima mit dem ISO-Format machen.

Wie genau würde ein SELECT für 'zwischen 10:00' und '13:00' aussehen? Also, das es 'prima' ist?

Einträge sind in der Art: yyyy-mm-dd hh:nn:ss

Pseudo-SQL (Mit Delphi-Funktionen):

Code:
select * from mytable where Copy(myFeld, 12, 5) >= '10:00' and Copy(myFeld, 12, 5) <= '12:59'

p80286 21. Nov 2014 11:12

AW: Wie am besten ein Datum und eine Uhrzeit in der DB speichern?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1280558)
Dies ist sinnvoll, wenn ich immer nur ganze Tage betrachten will (auch als Zeitraum) und vielleicht separat noch die Uhrzeit (Schichtbetrieb, Arbeitszeit etc.)

wenn Du nur das Datum benötigst, dann arbete mit
SQL-Code:
trunc(datefield)
z.b.
SQL-Code:
select 'Es ist Weihnachten'
from dual
where trunc(sysdate)=to_date('20141224','YYYYMMDD')
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Seite 3 von 3     123   

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