Wie wird hexadezimal nach varchar (datetime) umgewandelt?

8

Ich habe das Datetime-Exportieren ist "CAST (0x0000987C00000000 AS DateTime)", aber wenn ich es in datetime zurückbekommen möchte. Es ist ein NULL-Wert. Wie kann ich es wieder auf Datetime bekommen.

    
Zrot 09.02.2011, 14:38
quelle

7 Antworten

11

Das sieht wie das SQL Server datetime -Format aus. Intern wird dies als 2 ganze Zahlen gespeichert, wobei die ersten 4 Bytes die Tage seit dem 1. Januar 1900 und die zweite die Anzahl der Ticks seit Mitternacht sind (jeder Tick ist 1/300 Sekunde).

Wenn Sie dies in MySQL verwenden müssen, können Sie dies tun

%Vor%

Gibt

zurück %Vor%

(Danke an Ted Hopp für die Lösung in Aufteilen der Binärdaten)

    
Martin Smith 09.02.2011, 15:14
quelle
8

Ich füge nichts hinzu, was nicht angegeben wurde, aber ich habe dies verwendet, um aus dem obigen Code eine MySql-Funktion zu erstellen. Ich kann dann eine RegEx suchen und ersetzen (in Notepad ++), um die CAST (0xblahblahblah AS DATETIME) durch sp_ConvertSQLServerDate (0xblahblahblah) zu ersetzen.

%Vor%     
Christopher Marshall 15.09.2011 10:59
quelle
2

Dies ist die selbe select-Anweisung für PostgreSQL :

%Vor%

PostgreSQL Bit (32) Werte müssen mit 'x' statt 0 beginnen.

    
magoderre 25.10.2013 12:15
quelle
1

Hier ist ein Java-Programm, das ich gemacht habe.

Das Programm scannt die angegebene Datei (ändern Sie den Namen im folgenden Code) für

%Vor%

und ersetzt sie durch ihre jeweiligen

%Vor%

.

Wenn zum Beispiel SELECT CAST (0x00009CEF00A25634 as datetime) 2009-12-30 09:51:03.000 zurückgibt, scannt das Programm die Datei nach CAST(0x00009CEF00A25634 AS DateTime) und ersetzt sie durch CAST('2009-12-30 09:51:03.000' AS DateTime) .

Ich habe es verwendet, um ein von SQL Server generiertes Skript in etwas umzuwandeln, das eine eingebettete H2-Datenbank verstehen könnte.

Obwohl es für mich gut funktionierte, empfehle ich Ihnen, es zu überprüfen (einfach einige Testdaten laufen zu lassen und zu sehen), bevor Sie die tatsächlichen Daten verwenden.

%Vor%     
acdcjunior 03.02.2013 03:34
quelle
1

Mit notepad ++ regex ersetzen

%Vor%

Dies ersetzt

%Vor%

bis

%Vor%     
quelle
0

MSSQL-Hexadezimalcode für date und dateTime sind unterschiedlich.

Für ein Datum in Form von 0x00000000 können Sie diese Postgres-Funktion verwenden:

%Vor%

versuche es dann

%Vor%     
Aleph 15.10.2016 05:43
quelle
0

Für diejenigen, die eine Lösung in C # suchen. Zum Beispiel beim Lesen von Skriptdatenbankdaten.

%Vor%

Hier habe ich Regex verwendet, da meine Eingabe in der folgenden Form ist "CAST (0x0000A53E00E1A17B AS DateTime)", aber Sie können SubString () oder was auch immer verwenden, um die DateTime-Zeichenfolge zu erhalten.

    
Arthur 11.05.2017 10:43
quelle

Tags und Links