Entwickler-Ecke
Datenbanken - Zeit Rückgabeformat
Torsten Richter - Di 08.12.09 12:28
Titel: Zeit Rückgabeformat
Hallo,
ich habe auf einem MSSQL-Server eine SP, die mir die Serverzeit liefert
SELECT GETDATE() as Serverzeit
Das Ergebnisformat ist DateTime und sieht so aus : 2009-12-08 10:05:21.607
In Delphi (2009) rufe ich diese SP über eine TADOStoredProc auf
spServerZeit['Serverzeit']
Der Versuch, das Ergebnis ein eine TDateTime Variable zu bringen ergibt 0
Beim ablegen in einen String erhalte ich 08.12.2009 15:05:21
Also erkennt Delphi das Datumsformat und manipuliert es.
Wie kann ich das Ergebnis direkt in eine Variable vom Typ DateTime speichern ?
Wenn es nicht geht : wie kann ich den original-String der Datenbank erhalten (ohne geänderte Formatierung) ?
tia
Torsten
Muck - Di 08.12.09 17:09
Hallo,
habe gleiches Problem mit der Datumsformatierung, bei mir allerdings bei einem Programm, das mit SQL 2005 und SQL 2008 laufen muss. In 2008 sind ja neue Feldtypen dazugekommen fuer Datum und Zeit.
Ich benutze Delphi 2009 und SQL 2008 auf Windows Server 2003 SP2. Bei mir funktioniert das direkte einlesen mit:
Delphi-Quelltext
1: 2: 3: 4: 5:
| var X:TDateTime; AdoQuery1.SQl.Add('Select GetDate() as ServerZeit'); AdoQuery1.Open; X:=ADOQuery1['ServerZeit']; AdoQuery1.Close; |
Es mag sein, dass sich SQL 2005 anders verhaelt. Ich hatte seinerzeit im Change Ereignis des Eingabefeldes mit Datumsfunktionen gespielt, bis sich das Programm mit SQL 2005 und SQL 2008 gleich verhielt.
Den Anwender stoerte das Ausgabeformat YYYY-MM-DD HH:MM:SS.999 im DBEdit.
Probiere doch einfach entweder den cast im SQL String zu aendern, oder das Feld erst in einen String zu packen.
Delphi-Quelltext
1:
| AdoQuery1.SQl.Add('Select cast(GetDate() as DateTime) as ServerZeit'); |
(habe kein SQL 2005 mehr um zu testen)
Delphi-Quelltext
1:
| X:=StrToDateTime(ADOQuery1['ServerZeit']); |
Vielleicht ist aber auch alles viel einfacher und da ist eine Datums Einstellung irdgendwo im MS SQL Setup?
Wuerde mich auch interessieren, insbesondere fuer Applicationen, die mit SQL 2005 und SQL 2008 laufen muessen.
Markus
Torsten Richter - Mi 09.12.09 00:27
Hallo Martin,
vielen Dank für deine Antwort.
Die Ursache des Verhaltens war die Optimierung des Debuggers.
Ich hatte die Ergebnisvariable nicht ausgewertet, sondern mir nur das Ergebnis bei zeilenweiser Abarbeitung angesehen.
Nach einer Verarbeitung der Variablen bekomme ich auch das erwartete Ergebnis.
Das Verhalten von MS SQL 2005 und 2008 ist diesbezüglich identisch.
Was mich in dem Zusammenhang noch interessiert ist: wie bekomme ich heraus, welche Zeitzone der Server hat ?
gruss Torsten
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!