Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datum in SQLite Tabelle speichern? (https://www.delphipraxis.net/138732-datum-sqlite-tabelle-speichern.html)

divBy0 16. Aug 2009 16:12

Datenbank: SQLite • Version: 3.2... • Zugriff über: TDISQLite3

Datum in SQLite Tabelle speichern?
 
Hallo,

ich wollte in einer SQLite Datenbank ein Datum speichern. Habe das zuerst einfach als String ausprobiert zu speichern, nur dann kann ich die Daten nicht nach Datum sortiert ausgeben lassen.

Wie speichert man denn am besten ein TDate in SQLite?

DeddyH 16. Aug 2009 16:15

Re: Datum in SQLite Tabelle speichern?
 
Laut http://www.somacon.com/p370.php verfügt SQLite über einen Datentyp Date.

divBy0 16. Aug 2009 16:55

Re: Datum in SQLite Tabelle speichern?
 
Ok, danke! Das schaue ich mir mal an.

Im Moment speichere ich das TDate als REAL-Datentyp in der SQLite ab...

Jürgen Thomas 16. Aug 2009 17:15

Re: Datum in SQLite Tabelle speichern?
 
Im übrigen gehört das Datum nicht per String-Verknüpfung in einen SQL-Befehl, dafür sind unbedingt Parameter zu verwenden. Wenn du in der Doku zu TDISQLite3 nicht fündig wirst, dann gibt dir die Forumssuche sehr viele Hinweise. Jürgen

divBy0 16. Aug 2009 18:28

Re: Datum in SQLite Tabelle speichern?
 
Zitat:

Zitat von Jürgen Thomas
Im übrigen gehört das Datum nicht per String-Verknüpfung in einen SQL-Befehl, dafür sind unbedingt Parameter zu verwenden. Wenn du in der Doku zu TDISQLite3 nicht fündig wirst, dann gibt dir die Forumssuche sehr viele Hinweise. Jürgen

Das ist mir schon klar, dafür nehme ich natürlich Parameter.
Was ich mit String meinte war, das TDate mittels DateToStr(now) in ein Feld zu schreiben.

mkinzler 16. Aug 2009 18:33

Re: Datum in SQLite Tabelle speichern?
 
Und ads sollte man gerade nicht! Ein Datumsparamter sollte man auch als Datum belegen

divBy0 16. Aug 2009 19:24

Re: Datum in SQLite Tabelle speichern?
 
Das war ja auch nur ein Versuch.

Welchen Datentyp kann ich denn bei der SQLite nehmen, um ein TDate zu speichern?

mkinzler 16. Aug 2009 19:37

Re: Datum in SQLite Tabelle speichern?
 
Da SqLite laut #2 eine datumstyp hat, würde ich den auch verwenden!

divBy0 16. Aug 2009 20:44

Re: Datum in SQLite Tabelle speichern?
 
Ok, also SQLite hat keinen Datumstyp.

Das Datum muss nur als String im Format YYYY-MM-DD vorliegen, dann klappt alles.

Satty67 16. Aug 2009 20:50

Re: Datum in SQLite Tabelle speichern?
 
Zitat:

Zitat von divBy0
Ok, also SQLite hat keinen Datumstyp

Was ist mit Timestamp, das sollte doch ein kompletter Datum/Zeit Typ sein?

divBy0 16. Aug 2009 20:54

Re: Datum in SQLite Tabelle speichern?
 
Schau mal in die Doku, unter Datentypen.

hier!

Es gibt da ja nicht wirklich viele.

Zitat:

NULL. The value is a NULL value.

INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.

REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number.

TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16-LE).

BLOB. The value is a blob of data, stored exactly as it was input.
Allerdings bin ich mich auch gerade noch am reinarbeiten. :-D

Satty67 16. Aug 2009 21:00

Re: Datum in SQLite Tabelle speichern?
 
Ja, die Speicherklasse ist Real (ist es ja bei Delphi auch mit Double), aber TimeStamp als Typ sollte doch gehen.

Bernhard Geyer 17. Aug 2009 07:32

Re: Datum in SQLite Tabelle speichern?
 
Was SQLite wirklich keinen nativen Datetime-Datentyp hab (und damit manche Operationen wie gruppierung nach Tag oder ähnliches mit SQL nicht möglich ist) wäre evt. das ISO-Datumsformat (yyyy-mm-dd) eine möglichkeit. Sortierugn kein Problem und auch Gruppierung nach Datumsbestandteile ist mit einfachen String-Opreationen im SQL möglich.

Satty67 17. Aug 2009 07:36

Re: Datum in SQLite Tabelle speichern?
 
Also hatte es gestern ja noch schnell getestet. TimeStamp ist ein gültiger Typ für ein SQLite-3 Feld. Es wird auch wie ein Datum behandelt, d.h. datensensitive Controls geben das als Datum aus. Das es intern als Float behandelt wird, ist dabei kein Problem, wahrscheinlich sogar normal ;)

Wie weit Funktionen existieren, um das Datum intern zu filtern, hab' ich aber nicht getestet. Einfache Sortierung (aufsteigend/absteigend) sollte aber kein Thema sein.

divBy0 19. Aug 2009 10:08

Re: Datum in SQLite Tabelle speichern?
 
Zitat:

Zitat von Satty67
Also hatte es gestern ja noch schnell getestet. TimeStamp ist ein gültiger Typ für ein SQLite-3 Feld. Es wird auch wie ein Datum behandelt, d.h. datensensitive Controls geben das als Datum aus. Das es intern als Float behandelt wird, ist dabei kein Problem, wahrscheinlich sogar normal ;)

Wie weit Funktionen existieren, um das Datum intern zu filtern, hab' ich aber nicht getestet. Einfache Sortierung (aufsteigend/absteigend) sollte aber kein Thema sein.

Wie hast du denn das Feld angelegt?

So?
Code:
CREATE TABLE test (Datum TIMESTAMP)

Und wie fügst du dann das Datum ein?

So?
Delphi-Quellcode:
Query.SelectSQL := 'INSERT INTO test (Datum) VALUES (:_Datum)';
Query.Params.ParamByName('_Datum').AsDate := now;
...

Assertor 19. Aug 2009 10:10

Re: Datum in SQLite Tabelle speichern?
 
Hi,

Zitat:

Zitat von divBy0
Wie speichert man denn am besten ein TDate in SQLite?

In DISQLite3 speicherst Du ein Datum am besten über Bind_Variant_By_...

Gruß Assertor


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 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