![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ADO / JET4 / Access2000
Problem mit DateTime in AccessDB
Ich arbeite ohne Access, direkt aus Delphi2007 mit einer MDB Datei.
Die Tabellen wurden über Delphi per SQL angelegt:
SQL-Code:
Ok, ich weiss mittlerweile schon selbst das "Date" in einer AccessDB ein böses Wort ist, dass man wohl vermeiden sollte und in diversen SQL-Konstrukten in "" setzen muss. Aber, passiert ist nunmal passiert... :-(
CREATE TABLE Transactions
(Id COUNTER NOT NULL PRIMARY KEY, ... DateAndTime DATETIME NOT NULL DEFAULT NOW(), ... ) CREATE INDEX Idx_Transactions_DAT ON Transactions (DateAndTime) Mein Problem ist: Egal was ich mache und wie ich Abfrage, die Auswertung von "DateAndTime" liefert einfach falsche Ergebnisse. Dabei spielt es keine Rolle, ob ich das DateTime-Feld als String formatiere und per SQL.Text übergebe, oder per typisiertem ADO-Parameter. Selbst wenn ich in Access 2000 eine Abfrage erstellen und im SQL-Editor einen DateTime-Wert eingebe, erhalte ich falsche Ergebnisse. Hat dazu jemand eine Idee? Kennt jemand das Phenomen? |
Re: Problem mit DateTime in AccessDB
Was bedeutet falsch?
|
Re: Problem mit DateTime in AccessDB
Ich meine mich zu erinnern, das man in Access das Datum in '#' einfässt, und nicht in Hochkommata, versuchs mal mit
SQL-Code:
select * from foobar where DateTimeField = #2007-12-01#
|
Re: Problem mit DateTime in AccessDB
Format stimmt aber nicht ganz. Access erwartet die amerikanische Notation: #mm/dd/yyyy#
Grüße Mikhal |
Re: Problem mit DateTime in AccessDB
Danke, die Einklammerung in ## funktioniert solange es nur ein Datum ist (im Moment ausreichend).
Handelt es sich jedoch um einen Abfrageparameter mit Zeitanteil funktioniert #12/28/2007 01:30:56# zwar in Access, aber Delphi beschwert sich über den ":". Egal ob ParamCheck an oder aus ist. Wird das ganze in Quotes gefasst, schlägt auch dies fehl und ich bekomme eine AV wg unverträglichem Datentyp. BTW1: Funktioniert die ##-Notation nur für Access, oder ist sie auch zum MS SQL Express kompatibel? BTW2: @mkinzler: Funktioniert soll bedeuten, dass Ergebnisse geliefert wurden bzw. nicht geliefert wurden, die im selektierten Bereich liegen und daher erscheinen müssten. |
Re: Problem mit DateTime in AccessDB
mein vorschlag lautet, vergiss datetime, also die ganze einklammerung mit #yyyy-mm-dd hh:mm:ss#, sondern wandele das datum einfach in 'n float um und schreib das so in die datenbank weg... beim einlesen einfach wieder das das datum in 'n datetime konvertieren und du bist fein raus..
abfragen gehen dann wie folgt
SQL-Code:
oder so in der art <HTH>
select * from tabelle where zeitdatum = 49494.292
|
Re: Problem mit DateTime in AccessDB
Hallo,
benutze doch Parameter und AsDateTime Heiko PS: und ne ordentliche DB ;) |
Re: Problem mit DateTime in AccessDB
Zitat:
Aber wie schon angemerkt: Benutz parametrisierte Abfragen. |
Re: Problem mit DateTime in AccessDB
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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