php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-09-2006, 11:23
Oldfellow
 Newbie
Links : Onlinestatus : Oldfellow ist offline
Registriert seit: Sep 2006
Beiträge: 4
Oldfellow ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datum in Binary abgelegt, wie kann ich es wieder convertieren?

Hallo,

ich habe hier eine Datenbank in der der Zeitstempel binär abgelegt ist.
Wenn ich die Tabelle in Excell extrahiere bekomme ich z.B. folgendes Datum:

01C6C57CA9B84440

Wie kann ich diese Information wieder in ein richtiges Datum umwandeln?

Der obere Hexcode sollte etwa den 22.08.06 1:51:04 AM ergeben.

Aber wie funktioniert das?

Vielen Dank!
Mit Zitat antworten
  #2 (permalink)  
Alt 04-09-2006, 20:03
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Datum in Binary abgelegt, wie kann ich es wieder convertieren?

Wie sind die Timestamps denn zu binären Strings geworden? (Und warum überhaupt Oo,)
Mit Zitat antworten
  #3 (permalink)  
Alt 04-09-2006, 20:23
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Ehm häääh?

Das sind nie und nimmer Binärdaten. Binär --> Zweizuständig

also entweder 1 oder 0.

Da gibts keine Buchstaben drinne.

Wenn dann sind das Hexdezimaldaten, aber auch das glaube ich nicht. Finde erstmal raus was für eine Zahl es ist und dann sag uns nochmal bescheid
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #4 (permalink)  
Alt 05-09-2006, 01:51
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard


01C6C57CA9B84440 in hex entspricht
128006778640680000 in dec, wenn der win-calc nicht lügt.
und das ist kein timestamp.

werd mal konkreter. was steht in der tabelle? von welchem typ ist die spalte? wie kommt sie nach excel? was passiert dort?
Mit Zitat antworten
  #5 (permalink)  
Alt 05-09-2006, 08:22
Oldfellow
 Newbie
Links : Onlinestatus : Oldfellow ist offline
Registriert seit: Sep 2006
Beiträge: 4
Oldfellow ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

also die Spalte hat den Typ Binary, Size: 8

Wenn ich die Tabelle öffne bekomme ich in den Spalten auch nur <binary> angezeigt.

Ich habe die Tabelle mittels DataExport nach Excel exportiert, und da bekomme ich dann diesen Hex-String.

Die Daten in der Tabelle sind Ereignisse die Protokoliert wurden, wenn ich mir den ExcelExport ansehe, erkenne ich schon das, mit voran schreitendem Zeitpunkt der Ereignisse die Hexzahl größer wird, ich kann nur nicht erkennen welches System dahinter steckt.

Wie der Timestamp zu diesem Hexcode geworden ist kann ich leider nicht nachvollziehen, da das Programm, welches in die Datenbank schreibt, nicht von mir ist.

Hoffe ihr könnt mich jetzt eher verstehen.

Geändert von Oldfellow (05-09-2006 um 08:26 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-09-2006, 10:25
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Formel um einen unix timestamp in ein Datum/Zeit zu verwandeln, lautet:
=(x+((365*66+17)*86400))/86400 (siehe Google: excel unix timestamp). Um hex in dez zu verwandeln, gibt es die Funktion HEXINDEZ("maximal 40 bits") (siehe Excel-Hilfe). Aber heute ist etwa time= 1157444143, in hex 44FD322F . Du hast eine 64bit Zahl angegeben das ist kein üblicher timestamp. Um das System zu erkennen, müsste man einige Werte mit dem zugehörigen Datumswert haben.

Geändert von sternm (05-09-2006 um 12:51 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 05-09-2006, 13:04
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hast du mal noch ein paar von diesen codierten Daten?

Mit Angabe, wo sie ungefähr landen sollen (also, mindestens, welches Jahr sie darstellen).
__________________
ich glaube
Mit Zitat antworten
  #8 (permalink)  
Alt 05-09-2006, 13:53
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$mystery 
'01C6C57CA9B84440';
$formats = array('h','H','s','S','n','v',
                
'i','I','l','L','N','V','f','d');

foreach (
$formats as $f) {
    echo 
'<b>'.$f.'</b><br />';
    foreach (
unpack($f.'*'$mystery) as $v
        echo 
date('r'$v).'<br />';
}
?>
Ist da was dabei?
Mit Zitat antworten
  #9 (permalink)  
Alt 05-09-2006, 16:22
Oldfellow
 Newbie
Links : Onlinestatus : Oldfellow ist offline
Registriert seit: Sep 2006
Beiträge: 4
Oldfellow ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

hier noch ein paar Paare:

01C67D32B5E29500
=
22.05.2006 2:00:18 AM


01C67D336251F420
=
22.05.2006 2:05:07 AM


01C67D53113C9B60
=
22.05.2006 5:51:55 AM


01C693F7A49A5220
=
20.06.2006 1:25:25 AM


01C6A6CF8E268CD0
=
14.07.2006 12:56:19 AM

Sorry aber mit dem letzten Beitrag kann ich leider gar nichts anfangen.
Mit Zitat antworten
  #10 (permalink)  
Alt 05-09-2006, 17:46
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, ich hatte gerade mal Langeweile. Des Rätsels Lösung:

In dezimal umwandeln und durch 10000000 teilen und dann (warum auch immer) 134774 Tage davon abziehen.

PHP-Code:
$coded = array('01C67D32B5E29500''01C67D336251F420'
'01C67D53113C9B60''01C693F7A49A5220''01C6A6CF8E268CD0');

foreach(
$coded as $c) {
     echo(
date("d.m.Y H:i:s A", (hexdec($c) / 10000000) - (134774*24*60*60)) . "<br>");

Falls einer weiß, was das nun für ein Format sein soll, mich würde es mittlerweile interessieren

gruß,
ministry
__________________
ich glaube
Mit Zitat antworten
  #11 (permalink)  
Alt 05-09-2006, 18:15
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Hmmmm.. also auf jeden Fall hast du dir meinen Respekt damit verdient das du auf sone kranke Lösung kommst

Ich versuch mal 'ne Erklärung:

Der normale UNIX-Timestamp zählt ja die Sekunden vom 01.01.1970 um genau 1:00 morgens.

Da du nun rausgefunden hast, wie man das ganze berechnet mit dem komischen code, gehe ich folgerlich von folgendem aus: Die Zeitrechnung des Timestamps von Oldfellow beginnt erst 369,24383561643835616438356164384 Jahre (bzw. 134774 Tage) später als die vom UNIX-Timestamp. Dann bleibt noch das durch 10000000 teilen. Soweit ich weiß is das mit der gegeben Anzahl Nullen dort 10 Millionen. Eine Millionstel-Sekunde ist außerdem eine sog. Mikro-Sekunde.

Schlussfolgerung: Die Zeitrechnung wird also (außer das sie erst in ca. 340 Jahren beginnt) in 10mikrosekunden gemessen, anstatt in Sekunden.

Is doch unheimlich logisch oder?
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #12 (permalink)  
Alt 05-09-2006, 18:38
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, du hast mich jetzt drauf gebracht. Google-Suche nach "134774 days" sagt auch schon was, und zwar u.a.:

Zitat:
Windows, however, is another story. Windows XP certainly has available a good implementation of NTP (how to install it), which will get the system time set accurately as we require (note that Windows XP has a built-in SNTP client, which can be set to run periodically in order to provide roughly-accurate time sufficient for typical home use). And the GetSystemTimeAsFileTime() call returns the current time in hectonanoseconds (100-nanosecond units) since 1601-01-01T00:00:00Z (11644473600 seconds before the start of the Unix epoch on 1970-01-01T00:00:00Z). Isn't this enough?
http://www.lochan.org/2005/keith-cl/...html#timingwin

Also wäre das ein hexadezimal gespeicherter Windows-Timestamp, der übrigens in Hektonanosekunden gemessen wird und dessen Zählung schon am 01.01.1601 beginnt .

Naja, hätten wir das geklärt
__________________
ich glaube
Mit Zitat antworten
  #13 (permalink)  
Alt 05-09-2006, 19:02
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Hektonanosekunde = 10Mikrosekunden

das ganze is echt krank
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #14 (permalink)  
Alt 05-09-2006, 22:24
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Und allem ist der Entwickler der Software schuld, welche diese Timestamps erzeugt. Selbst wenn er wegen OS-Abhängigkeit etc. keine andere Wahl hatte, als dieses Format zu nehmen, so hätte er das wenigstens ordentlich dokumentieren müssen!
Mit Zitat antworten
  #15 (permalink)  
Alt 05-09-2006, 23:47
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
Und allem ist der Entwickler der Software schuld, welche diese Timestamps erzeugt. Selbst wenn er wegen OS-Abhängigkeit etc. keine andere Wahl hatte, als dieses Format zu nehmen, so hätte er das wenigstens ordentlich dokumentieren müssen!
(na ich denke mal der TO hat keinen Zugriff auf den Code, oder? Sonst hätte man da ja mal einen Blick reinwerfen können und wäre wahrscheinlich von selbst drauf gekommen ... und in ein Manual würde ich auch nicht schreiben wie das Timestamp-Format in der Datenbank ist )
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:09 Uhr.