AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Konvertierungsprobleme bei datetime [MSSQL]
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierungsprobleme bei datetime [MSSQL]

Ein Thema von Madlax · begonnen am 15. Aug 2005 · letzter Beitrag vom 15. Aug 2005
Antwort Antwort
Madlax

Registriert seit: 30. Aug 2004
Ort: Erkelenz
9 Beiträge
 
Delphi 7 Enterprise
 
#1

Konvertierungsprobleme bei datetime [MSSQL]

  Alt 15. Aug 2005, 10:53
Datenbank: MSSQL • Zugriff über: ADO
Hallo zusammen,

ich hab ein "kleines" Konvertierungsproblem bei MSSQL.

Folgendes Statement:

SQL-Code:
select convert(datetime, '01.01.1900 13:00:00'),
       convert(float, convert(datetime, '01.01.1900 13:00:00')),
       convert(datetime, convert(float, convert(datetime, '01.01.1900 13:00:00')))
Um das Problem zu verdeutlichen, habe ich hier das Datum als String eingefügt, normalerweise wird es als Float im Programm verwendet.

Das Problem ist jetzt, dass ich nach einer Konvertierung eines Datums in Float und wieder zurück nach Datetime nicht das selbe Datum erhalte.
Also '01.01.1900 13:00:00' => 0.54166666666666663 => '01.01.1900 12:59:59.997'.
Vielleicht kennt ja jemand eine Lösung, wie ich das Datum nach Float und zurück konvertieren kann, ohne dass das Datum sich danach ändert
Gruß,
Madlax
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Konvertierungsprobleme bei datetime [MSSQL]

  Alt 15. Aug 2005, 11:55
Zitat von Madlax:
ich hab ein "kleines" Konvertierungsproblem bei MSSQL.
Also '01.01.1900 13:00:00' => 0.54166666666666663 => '01.01.1900 12:59:59.997'.
Du hast ein Rundungsproblem, kein Konvertierungsproblem.
Um dieses Rundungsproblem zu umgehen gibt es eine einfache Regel:
Ein Datum(incl. Uhrzeit) bleibt solange in seinem Native-Format (also Double) bis das Datum(incl. Uhrzeit)
entweder an der Benutzeroberfläche angezeigt wird oder das Programm auf anderem Wege (wird z.B. in eine TXT-Datei geschrieben) verlässt.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Konvertierungsprobleme bei datetime [MSSQL]

  Alt 15. Aug 2005, 14:41
Hai Madlax,

warum musst Du das Datum überhaupt in einen anderen Typ konvertieren?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Madlax

Registriert seit: 30. Aug 2004
Ort: Erkelenz
9 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Konvertierungsprobleme bei datetime [MSSQL]

  Alt 15. Aug 2005, 15:04
Hi Sharky,

naja, ich wollte testen, warum der TTime-Wert - den ich als Double eintrage - sich von dem TTime-Wert unterscheidet, den ich in Delphi vorliegen hab.

Zur Erläuterung:
Ich habe in Delphi einen TTime Wert (0.54166666667) der die Zeit 13:00:00 darstellt. Als ich diesen Double Wert nun per Insert-Statement eingefügt und später wieder als DateTime (.AsDateTime) ausgelesen habe, bekam ich die Zeit 12:59:59:997 zurückgeliefert.

Naja, ich habe das Problem nun "gelöst", da ich den TTime Wert nicht mehr als Double sondern als String, also 13:00:00, einfüge. Trotzdem wundert mich die Konvertierung/Rundung in MSSQL immernoch, da ich eigentlich davon ausgegangen bin, dass ich nach obiger Konvertierung wieder das Ausgangsdatum bekomme.
Gruß,
Madlax
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Konvertierungsprobleme bei datetime [MSSQL]

  Alt 15. Aug 2005, 15:32
Hai Madlax,

das würde ich so nicht machen

Gerade bei Datums/Zeit - Werten arbeite ich nur mit Parametern um sie in die DB einzutragen.
Der große Vorteil ist das ich mich nicht um das beim Anwender eingestellte Datums/Zeit-Format kümmern muss da ich immer TDate als Typ eintrage.

Zum Beispiel:
Delphi-Quellcode:
procedure TForm1.InsertClick(Sender: TObject);
begin
  with ADOQuery1 do
  begin
    Close;
    SQL.Text := 'INSERT INTO tabelle zeitfeld VALUES (:pzeitfeld)';
    Parameters.ParamByName('pzeifeld').Value := now;
    ExecSQL;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Madlax

Registriert seit: 30. Aug 2004
Ort: Erkelenz
9 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Konvertierungsprobleme bei datetime [MSSQL]

  Alt 15. Aug 2005, 16:31
Ja, da hast du Recht Sharky.

Man kann aber auch vorgeben, in welchem Format das Datum formatiert werden soll, von daher denke ich mal, beide Möglichkeiten haben ihre Berechtigung
Gruß,
Madlax
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz