Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Sqlite - Zeitstempel als Integer (https://www.delphipraxis.net/190118-sqlite-zeitstempel-als-integer.html)

Der schöne Günther 1. Sep 2016 12:57

Datenbank: SQLite • Version: 3 • Zugriff über: dll

Sqlite - Zeitstempel als Integer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine Tabelle, die wird so erstellt:
Code:
CREATE TABLE [measurements] (
  [id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  [timeComplete] TIMESTAMP,
  /* ... */   
);
Wenn ich es richtig verstanden habe, dann ist die Spalte "timeComplete" eine NUMERIC-Spalte, also INTEGER da ihr Typ "TIMESTAMP" in keine andere Kategorie passt.

Die Query
Code:
SELECT CAST(timeComplete as INTEGER), timeComplete FROM measurements
ORDER by timeComplete DESC
liefert mir als Ergebis:
Anhang 45762

Das macht doch keinen Sinn, weshalb ist es in zwei Fällen unsinnigerweise "2016", nur beim letzten macht es Sinn (Unix-Zeitstempel)?

Mein "Sortieren nach Zeit" funktioniert wenn ich die Query explizit auf
Code:
SELECT CAST(timeComplete as INTEGER), timeComplete FROM measurements
ORDER by CAST(timeComplete as TEXT) DESC
abändere, aber verstehen tue ich es nicht.

jobo 1. Sep 2016 13:06

AW: Sqlite - Zeitstempel als Integer
 
Seit wann kann SQLite denn TIMESTAMP?

Wieso nutzt Du nicht die SQLite Funktionen?
https://www.sqlite.org/lang_datefunc.html

Aviator 1. Sep 2016 13:12

AW: Sqlite - Zeitstempel als Integer
 
Zitat:

Zitat von jobo (Beitrag 1346435)
Seit wann kann SQLite denn TIMESTAMP?

Wieso nutzt Du nicht die SQLite Funktionen?
https://www.sqlite.org/lang_datefunc.html

SQLite hat eigentlich nur 5 Datentypen. Aber durch das Prinzip der Datentypaffinitäten kann man sich beliebige Datentypen definieren. Eine Spalte könnte also mit dem Datentyp jobo deklariert werden. Bei SQLite wird dann ein Verfahren abgearbeitet das entscheidet, wie der Datentyp behandelt wird. Siehe SQLite Datentypen und SQLite Datentyp Affinitäts-Beispiele.

Zitat:

Zitat von Der schöne Günther (Beitrag 1346432)
Wenn ich es richtig verstanden habe, dann ist die Spalte "timeComplete" eine NUMERIC-Spalte, also INTEGER da ihr Typ "TIMESTAMP" in keine andere Kategorie passt.

Das sollte passen.

Der schöne Günther 1. Sep 2016 16:45

AW: Sqlite - Zeitstempel als Integer
 
Zitat:

Zitat von jobo (Beitrag 1346435)
Wieso nutzt Du nicht die SQLite Funktionen?
https://www.sqlite.org/lang_datefunc.html

Das habe ich probiert bevor ich in die Delphi-Praxis fragen kam. Das besserte auch nichts. Jetzt scheint das aber genauso gut zu funktionieren. Ich bin verwirrt, vielleicht war in der Test-Datenbank etwas korrupt, wer weiß. :oops:


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf