sqlite date erstellen

C4non

Lt. Commander
Registriert
Juli 2012
Beiträge
1.296
Sorry, falls ich im falschen unterforum bin. Ich wollte gerne wissen wie man nochmal sowas gemacht hat. Ich würde gerne persons noch ein Datum hinzufügen mit dem typ "date". Aber ich weiß es leider selber nicht mehr:p

Wenn ich persons angeklicke und auf tabelle bearbeiten gehe - kann ich zwar einen neuen Feld erstellen aber als typ ist da kein date vorhanden sondern nur integer,text,blob,real,nummeric

Ich verwende DB Browser for SQlite
 
danke dir:). Hab mich auch gewundert.
 
Daniel_Wong schrieb:
man muss wohl Text nehmen
Muss man nicht. Ich würde den UNIX Timestamp also einen Integer Wert benutzen. Den kann man mittels
SELECT datetime(timestamp, 'unixepoch'); bzw. SELECT datetime(timestamp, 'unixepoch', 'localtime'); umwandeln.

Steht als Beispiel auch bei Deinem Link ...

Hier noch ein Tutorial, welches die unterschiedlichen Möglichkeiten erklärt:
http://www.sqlitetutorial.net/sqlite-date/
 
Zuletzt bearbeitet: (Tutorial ergänzt)
  • Gefällt mir
Reaktionen: Piktogramm, berto und Kontrollfreak
Öhm... ich habe da eine SQLite Tabelle mit folgendem Eintrag:

SQL:
CREATE TABLE IF NOT EXISTS Files (
              FileID integer PRIMARY KEY AUTOINCREMENT,
              DocumentID integer NOT NULL DEFAULT 0,
              StorageID integer NOT NULL,
              FileDate datetime NOT NULL DEFAULT (datetime('now','localtime')),
              FileName varchar(500) NOT NULL,
              FileExtension varchar(20) NOT NULL,
              FileSize integer NOT NULL DEFAULT 0,
              Checksum varchar(200) DEFAULT NULL,
              FileNotice text DEFAULT NULL
    )
 
@ayngush
Die aktuelle Version 3.* kennt für Tabellen nur die Datentypen TEXT, NUMERIC, INTEGER, REAL und BLOB.

Es gibt sogenannte "Affinitäten", dass heißt es können Werte anderer Datentypen in affinen Datentypen gespeichert werden. Beschrieben ist das in der Doku. https://www.sqlite.org/

Beispiele dazu:
Ein create mit "varchar" wird in der Datenbank zum Typ "TEXT", ein create mit "datetime" wird in der Datenbank zum Typ "NUMERIC".

Nachtrag - entsprechend der Doku sollte man die Verwendung von "AUTOINCREMENT" vermeiden ...
https://www.sqlite.org/autoinc.html
 
Zuletzt bearbeitet: (Link angepasst)
Genau das Verhalten von autoincrement brauche ich aber in der Anwendung.
FileIDs dürfen in dem System niemals doppelt vergeben werden, auch nicht, wenn ein Datenbankeintrag mal gelöscht wird.
Mit 64Bit Int werde ich ein Leben lang damit auskommen.

Und was soll daran falsch sein die extra dafür vorhandenen Typ Affinitäten zu benutzen?
 
ayngush schrieb:
FileIDs dürfen in dem System niemals doppelt vergeben werden, auch nicht, wenn ein Datenbankeintrag mal gelöscht wird.
Mit 64Bit Int werde ich ein Leben lang damit auskommen.
ROWID ist ebenfalls 64bit Int. Gelöschte ROWID werden erst neu vergeben, wenn das Ende des Zahlenbereichs erreicht wurde, also nach 9223372036854775807 Einträgen. An der Stelle läuft der AUTOINCREMENT dann auf einen Fehler (SQLITE_FULL).

ayngush schrieb:
Und was soll daran falsch sein die extra dafür vorhandenen Typ Affinitäten zu benutzen?
Ich habe nirgendwo geschrieben, das es falsch ist. Man muss bei der Nutzung von Affinitäten aber beachten, dass Abfragen, Vergleiche und Berechnungen auf Grundlage der Affinitäten andere Resultate liefern können als erwartet. Deswegen würde ich unerfahrenen Nutzern davon abraten.
 
Zurück
Oben