AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit DateTime in AccessDB
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit DateTime in AccessDB

Ein Thema von mischerr · begonnen am 28. Dez 2007 · letzter Beitrag vom 3. Jan 2008
Antwort Antwort
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#1

Problem mit DateTime in AccessDB

  Alt 28. Dez 2007, 00:03
Datenbank: Access • Version: 2000 • Zugriff über: ADO / JET4 / Access2000
Ich arbeite ohne Access, direkt aus Delphi2007 mit einer MDB Datei.
Die Tabellen wurden über Delphi per SQL angelegt:

SQL-Code:
CREATE TABLE Transactions
(Id COUNTER NOT NULL PRIMARY KEY,
 ...
 DateAndTime DATETIME NOT NULL DEFAULT NOW(),
 ...
)

CREATE INDEX Idx_Transactions_DAT
ON Transactions
(DateAndTime)
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...

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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit DateTime in AccessDB

  Alt 28. Dez 2007, 05:36
Was bedeutet falsch?
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Problem mit DateTime in AccessDB

  Alt 28. Dez 2007, 08:59
Ich meine mich zu erinnern, das man in Access das Datum in '#' einfässt, und nicht in Hochkommata, versuchs mal mit
select * from foobar where DateTimeField = #2007-12-01#
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
795 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit DateTime in AccessDB

  Alt 28. Dez 2007, 09:47
Format stimmt aber nicht ganz. Access erwartet die amerikanische Notation: #mm/dd/yyyy#

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Problem mit DateTime in AccessDB

  Alt 28. Dez 2007, 15:24
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.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#6

Re: Problem mit DateTime in AccessDB

  Alt 28. Dez 2007, 22:13
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 folgtselect * from tabelle where zeitdatum = 49494.292 oder so in der art <HTH>
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Problem mit DateTime in AccessDB

  Alt 29. Dez 2007, 06:37
Hallo,

benutze doch Parameter und AsDateTime


Heiko
PS: und ne ordentliche DB
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Problem mit DateTime in AccessDB

  Alt 29. Dez 2007, 07:23
Zitat von mischerr:
BTW1: Funktioniert die ##-Notation nur für Access, oder ist sie auch zum MS SQL Express kompatibel?
Access hat teilweise SQL-Eigenheiten die man bei keiner andern DB findet. ##-Notation ist so was.
Aber wie schon angemerkt: Benutz parametrisierte Abfragen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Problem mit DateTime in AccessDB

  Alt 3. Jan 2008, 19:19
Zitat von mikhal:
Format stimmt aber nicht ganz. Access erwartet die amerikanische Notation: #mm/dd/yyyy#

Grüße
Mikhal
beides ist möglich, ISO und US Format. Wobei ich immer dem ISO Format den Vorzug gebe.
  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 08:57 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