Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00 (https://www.delphipraxis.net/210984-datetime-anzeige-dbgrid-ist-bei-der-zeit-00-00-00-a.html)

Uwe Raabe 10. Jul 2022 15:32

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Zitat:

Zitat von Smiley (Beitrag 1508629)
Dort steht nur "Date" als Typ.
Kann SQLite kein DateTime ? ich habe es aber im Create als DateTime angelegt.

Die Doku sagt dazu:
Zitat:

2.2. Date and Time Datatype
SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
Applications can choose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.
Tatsache ist, dass das Feld als Date ankommt und nicht als DateTime. Warum das so ist, kann ich im Moment auch nicht sagen.

Smiley 10. Jul 2022 15:57

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Gespeichert wird das Datum schon richtig mit Zeit, wie man im SQLiteSpy sieht, dort werden die Datumsangaben mit der richtigen Zeit angezeigt.

Etwas anderes noch mit der Formatangabe. Die Minuten werden mal mit mm und mal mit nn angegeben.
Selbst in DelphiBasics http://www.delphibasics.co.uk/RTL.as...formatdatetime wird es mal mit mm und nn angegeben.
nn = Minute number as 2 digits
LongTimeFormat = hh:mm:ss
Was ist denn nun richtig ?

Uwe Raabe 10. Jul 2022 16:27

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Zitat:

Zitat von Smiley (Beitrag 1508635)
Gespeichert wird das Datum schon richtig mit Zeit, wie man im SQLiteSpy sieht, dort werden die Datumsangaben mit der richtigen Zeit angezeigt.

Allerdings steht dort auch als Typ "date" und FireDAC wandelt das in ein TDateField um. Vielleicht hilft es, wenn du beim Select das Feld explizit als DateTime castest.

Zitat:

Zitat von Smiley (Beitrag 1508635)
Etwas anderes noch mit der Formatangabe. Die Minuten werden mal mit mm und mal mit nn angegeben.
Selbst in DelphiBasics http://www.delphibasics.co.uk/RTL.as...formatdatetime wird es mal mit mm und nn angegeben.
nn = Minute number as 2 digits
LongTimeFormat = hh:mm:ss
Was ist denn nun richtig ?

Formell korrekt ist hh:nn:ss (zur Unterscheidung vom Monat), aber die internen Routinen tolerieren auch ein hh:mm:ss. Letzteres ist wohl auch Windows geschuldet, das auf Anfrage genau dieses zurückgibt.

himitsu 10. Jul 2022 17:41

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Was sagt denn FieldType/DataType?
Und gibt es bei FireDAC nicht auch irgendwo die inneren TypInfos, also das was das DBMS/Treiber dem FD für einen Typ nennt?

Smiley 10. Jul 2022 18:12

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Danke Uwe für die klare Erklärung beim Timeformat.

Mit dem Casten im SQL habe ich etwas gefunden aber noch nicht richtig die Anwendung verstanden. Eventuell auch convert verwenden, da blick ich aber noch weniger durch.

So würde ich es machen nach dem was ich gelesen habe:
Code:
qKasse.SQL.Text := 'Select Nr,Name,EPreis,Menge,Frei,Rabatt,Summe,  cast(Datum AS DateTime) AS Datum,  Bemerkung from Kasse order by Datum Asc';
Hier bekomme ich aber die Meldung: ungültige Typumwandlung.

Kann da jemand helfen wie man das Datum als DateTime richtig casted im SQL Select ?

Smiley 10. Jul 2022 18:19

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Liste der Anhänge anzeigen (Anzahl: 2)
@himitsu
ich habe im FDConnection und Query folgendes gesetzt, das wirkt sich aber nicht aus.

Smiley 10. Jul 2022 19:04

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Ich habe jetzt einen SQL String gefunden der mir Datum und Zeit anzeigt, aber im englischen format 2022-07-07 14:02:05.
Nachformatieren im GridInit bringt einen Typumwandlungsfehler.

Code:
  qKasse.SQL.Text := 'Select Nr,Name,EPreis,Menge,Frei,Rabatt,Summe, '+
                     'Datetime(Datum) AS Datum ,Bemerkung '+
                     'from Kasse order by Datum Asc';

Delphi.Narium 10. Jul 2022 19:34

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
How the DateTime() Function Works in SQLite und dort nach strftime suchen.

Eventuell sowas?
SQL-Code:
select strftime('%d.%m.%y %H:%M:%S', Datum) as Datum from tabelle

Smiley 11. Jul 2022 08:22

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Danke Delphi.Narium für den Hinweis und den Link mit der hilfreichen Erklärung.
Aber ich weiß nicht wie ich strftime in meinen String einbinden soll.
Dies hier funktioniert nicht wegen der Hochkommas:
Code:
qKasse.SQL.Text := 'Select Nr,Name,EPreis,Menge,Frei,Rabatt,Summe, '+
                   'strftime('%d.%m.%y %H:%M:%S', Datum) as Datum ,Bemerkung '+
                   'from Kasse order by Datum Asc';
Mit
Code:
  qKasse.SQL.Text := 'Select Nr,Name,EPreis,Menge,Frei,Rabatt,Summe, '+
                     'Datetime(Datum) AS Datum ,Bemerkung '+
                     'from Kasse order by Datum Asc';
funktioniert das noch da hier keine Hochkommas verwendet werden.
Ansonsten wäre strftime Ideal für mich um eine beliebige Formatierung des DateTime Strings hinzubekommen.

Delphi.Narium 11. Jul 2022 08:37

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
 
Delphi-Quellcode:
qKasse.SQL.Text := 'Select Nr, Name, EPreis, Menge, Frei, Rabatt, Summe, ' +
                   'strftime(''%d.%m.%y %H:%M:%S'', Datum) as Datum, Bemerkung ' +
                   'from Kasse order by Datum Asc';


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz