Seite 1 von 1

Seltsames Datumsformat in DB

Verfasst: 12.09.2011 20:07
von HeX0R
Moin,

ich habe mir hier auf Arbeit einen Konverter gebastelt, der direkt in der Datenbank unserer Auswertesoftware "rumpfuscht".
Das klappt auch erstaunlich gut (ist Interbase, musste erst mal mit ODBC ein wenig kämpfen).

Jedenfalls erreiche ich unseren Programmierer seit Tagen nicht, der könnte mir das natürlich schnell sagen.

Aber es gibt ja bestimmt noch mehr DB-Kämpfer hier, die da noch eine Idee haben:

Ich habe ein Feld, das das Datum beinhaltet.
Ich komme aber einfach nicht hinter das Format, denn es ist ein Float (o.k., ein Double).

Zwei Beispiele:
40798,760812662 entspricht: 12.09.2011 18:15:34
40792,4211445602 entspricht: 06.09.2011 10:06:26

Hat vielleicht jemand eine Ahnung, wie ich das umrechnen kann?
Ich glaube nicht, dass er sich da was eigenes einfallen hat lassen, weil er sich eigentlich immer schön
an Standards hält, von daher kann es eigentlich nicht so ungewöhnlich sein.

Vielleicht weiss auch jemand, wieso er hier Fließkomma benutzt hat,
ich hätte irgendeine Art von Timestamp erwartet.

Grüße

Re: Seltsames Datumsformat in DB

Verfasst: 12.09.2011 20:14
von ts-soft
Naja, füg es in eine Tabellenkalkulation Deiner Wahl ein, z.B. Excel und formatiere die Zelle als Datum :mrgreen:

Gruß
Thomas

//edit:
Für Excel, Calc usw., beginnt die Zeitrechnung mit der Zahl 0 die das unwirkliche Datum 0.0.1900 für Excel bedeutet!
Der Rest ist höhere Mathematik, da passe ich :mrgreen:

Re: Seltsames Datumsformat in DB

Verfasst: 12.09.2011 20:21
von HeX0R
In der Tat wird das richtige Datum angezeigt (auch bei OpenOffice :shock: ), aber ich weiß immernoch nicht, was dahinter steckt.

Re: Seltsames Datumsformat in DB

Verfasst: 12.09.2011 20:39
von Kiffi
support.microsoft.com hat geschrieben:Excel speichert alle Datumsangaben als ganze Zahlen und alle Uhrzeitangaben als Dezimalbrüche. Bei diesem System kann
Excel Datums- und Zeitangaben wie andere Zahlen addieren, subtrahieren oder vergleichen; alle Datumsangaben werden
mithilfe dieses Systems verarbeitet.

In diesem System steht die fortlaufende Zahl 1 für den 01.01.1900, 12:00:00 Uhr. Zeitangaben werden als Dezimalzahlen
zwischen ,0 und ,99999 gespeichert, wobei ,0 für 00:00:00 steht und ,99999 für 23:59:59 Uhr. Die ganzen Zahlen für die
Datumsangaben und die Dezimalbrüche für die Zeitangaben können zu Zahlen kombiniert werden, die aus einem ganzzahligen
Teil und einem Dezimalteil bestehen. Beispielsweise entspricht die Zahl 32331,06 dem Datum 07.07.88 und der Uhrzeit
01:26:24.
Quelle: http://support.microsoft.com/kb/214094/de

Grüße ... Kiffi

Re: Seltsames Datumsformat in DB

Verfasst: 12.09.2011 20:39
von HeX0R
Aaah Danke Kiffi!!

[Edit2]
Falls nochmal jemand das selbe Problem hat:

Code: Alles auswählen

#TIMESUB = 25569
#TIMEFAK = 86400

Procedure GetUNIXTimeStamp(D.d)
	Protected Result.d
	
	Result = D - #TIMESUB
	Result * #TIMEFAK
	ProcedureReturn Int(Result)
EndProcedure

Procedure.d GetExcelDatestamp(D)
	Protected Result.d
	
	Result = D / #TIMEFAK
	Result + #TIMESUB
	ProcedureReturn Result
EndProcedure

Debug FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", GetUNIXTimeStamp(40798.760812662))
Debug FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", GetUNIXTimeStamp(40792.4211445602))
Debug GetExcelDatestamp(Date())

Re: Seltsames Datumsformat in DB

Verfasst: 12.09.2011 22:11
von ts-soft
HeX0R hat geschrieben: Falls nochmal jemand das selbe Problem hat:
Bitte in Tipps und Tricks nochmal posten, hier geht es verloren :allright:

Re: Seltsames Datumsformat in DB

Verfasst: 13.09.2011 10:49
von bobobo
passiert

Re: Seltsames Datumsformat in DB

Verfasst: 13.09.2011 15:30
von ts-soft
Danke 3bo

Was mir hierzu noch einfällt, eigentlich speichert eine DB das Datum doch intern als String, also sollte es als solcher
auch zurückkommen, wenn man das Datum als String ausliest und die Umwandlung unnötig machen, jedenfalls
theoretisch :wink:

Gruß
Thomas