![]() |
Datenbank: MS-SQL • Version: 2000 • Zugriff über: ADO
[MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Moin Zusammen,
in einer Spalte vom Typ smalldatetime möchte ich nur die Zeit speichern, da mich an der Stelle das Datum nicht weiter interessiert. Die Zeit stammt aus TDateTimePicker.Time. Um jetzt einen definierten Zustand für die Tabelle zu schaffen wollte ich, mit Hilfe von Frac nur den Zeitanteil wegschreiben, so dass also, z.B., 0,25 für 6:00 Morgens gespeichert wird. Durch die 0 im Datumsanteil müsste dort also 01.01.1900 06:00:00 gespeichert werden. Leider ist der SQL-Server da anderer Meinung, und wirft einen Fehler: Zitat:
Zugewiesen wird der Wert über TADODataSet.FieldValues[...], gespeichert dann per TADODataSet.Post. Als Workaround addiere ich jetzt einfach das zur Zeit gehörige Datum mit auf, aber woher das Problem stammt wüsste ich doch ganz gerne. |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Zitat:
Generell ist es eigentlich immer mit weniger Probleme behaftet wenn man INSERT-Statement mit Parametern schreibt. |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Code:
Wenn du nun beim Delphityp TDateTime das Datum wegschneidest (also zwischen 0.0 und 0.999999), dann bist du ganz knapp ausserhalb des für smalldatetime gültigen Bereichs.
[b]smalldatetime[/b]
Datums- und Zeitangaben zwischen dem 1. Januar 1900 und dem 6. Juni 2079 mit einer Genauigkeit von einer Minute. Die Genauigkeit von einer Minute ist für viele Anwendungen zu wenig; ob das für dich ausreichend ist? |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Moin Berhard,
ich verwende keine As-Methode, sondern direkt den Variant FieldValues. Die Umstellung von Edit/Post auf UPDATE habe ich auch schon auf dem Zettel ;-) Zitat:
Für mich sieht es, gemäss Fehlermeldung, so aus, als würde der Wert zweimal konvertiert werden, einmal in datetime (nicht TDateTime, sondern serverseitig), und dann in smalldatetime, und dann kracht es ;-) Mir stellt sich halt nur die Frage, wodurch diese doppelte Konvertierung hervorgerufen wird. Zitat:
|
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Zitat:
|
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Moin Bernhard,
meinst Du den Profiler? Durch den muss ich mich dann erst mal durchbeissen ;-) |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Hallo Christian,
Also ein direktes 'INSERT' funktioniert ohne Probleme. Ich weiss aber, wo der Hund begraben liegt: Delphi (oder ADO) wird deine Zeit in '31.12.1899 05:30' übersetzen. Klar, was anderes als TDateTime kennt Delphi ja auch nicht und 0,5 ist nun mal der '31.12.1899 12:00'. Dann wird das zum Server geschickt und der meckert dann. Der Profiler ist übrigens ganz einfach. 1. Starten 2. Einloggen 3. Die Standardeinstellungen für ein Trace übernehmen 4. Erstmal den output anschauen 5. Oben sind ein paar Knöppe, Start,Stop, Pause (und noch ein paar mehr, egal jetzt) 6. Drück auf Stop, und spiel mit den Optionen rum. Interessant ist, WAS du anzeigen willst, WAS du protkollieren willst. Weiterhin kannst Du noch filtern, WER angezeigt werden soll. |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Moin alzaimar,
danke. Jetzt habe ich es hinbekommen. Nun muss ich nur noch rauskriegen, was ich überwachen muss ;-) |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Zitat:
Ist wohl MS nicht fähig sich auf den gleichen Startwert zu einigen. Hier sehe ich aber den 31.12.1899 00:00 eh etwas sehr ungewöhnlich an (auch wenns der von Delphi ist) |
Re: [MSSQL2000] Smalldatetime-Konv. ohne Datum schlägt fehl
Moin Zusammen,
bei Delphi ist der Startwert der 30.12.1899 00:00 (warum auch immer :gruebel:) Morgen werde ich mich noch mal durch den ADO-Aufruf mit Debug-DCUs durcharbeiten, um mal zu sehen, an welcher Stelle denn nun die Konvertierung stattfindet. Mit dem Tracen finde ich das nicht :? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz