Wird man einmal ein Datum speichern können ? / Wie soll ich ein Datum speichern ?
Vielleicht kommt das mal, eber das braucht es doch eigentlich
gar nicht.
Empfohlene Variente:
Du kannst entweder einen timestamp als int speichern und dann vor dem
anzeigen in ein datum umwandeln.
Das sortieren funktioniert dann automatisch richtig.
Oder:
... du speicherst das datum als string (str), am besten im format yyyymmdd
also für heute wäre das zB 20021101. so funktioniert das sortieren
ebenfalls richtig (da zuerst jahr dann monat dann tag kommt). auch hier musst
du dann halt den string form dem anzeigen umwandeln.
auch könntest du ein format wie z.B. yyyy-mm-dd nehmen, was vielleicht
sogar einfach zum parsen ist.
Wenn du mit dem gespeicherten datum keine operationen vornehmen musst, z.B. + 1 tag, dann kannst du auch einfach den rückgabewert von z.B. date("D M j H:i:s Y") als string speichern und diesen unverändert anzeigen und später überschreiben. Der nachteil ist hier einfach das ein sortieren nach dem datumsfeld nicht richtig funktionieren würde.
Ich verstehe das mit den 3 Zeilen wo die Spalteninformationen gespeichert werden nicht
Um eins mal gleich vorne weg zu nehmen: Wenn man eine Tabelle mit CREATE
TABLE erstellt, braucht man sich nicht darum zu kümmern.
Hat man eine Tabelle jedoch nocht mit einer Version vor 0.1.5-Alpha-01
erstellt (auch mit CREATE TABLE) muss man diese nun
SELBST, also VON HAND anpassen.
Die tabellen werden ja bekanntlich in text files gespeichert. Früher
war es so das die oberen beiden zeilen, also die ersten 2, noch keine
daten enthielten,
sondern informationen über die spalten der tabelle. Die erste Zeile
enthält die spaltennamen. Für eine personen-tabelle könnte
das z.B.
name#vorname#alter
sein.
die zweite zeile enthält den datentyp dieser spalten. z.B.
str#str#int
jetzt, in den neueren versionen ist noch eine dritte zeile hinzugekommen
die noch informationen über die spalten der tabelle speichert,
und zwar die Standardwerte. Wenn man ein INSERT macht, und dabei einige
spalten nicht angibt, wird anstatt nichts, der entsprechende
Wert der 3. Zeile eingefügt. Diese 3. Zeile könnte z.B. so
aussehen:
meier#hans#40
So würde nun also die leere tabelle, ohne daten aussehen:
name#vorname#alter str#str#int
meier#hans#40
Denke daran das in den früheren Versionen (vor 0.1.5-Alpha-01)
die 3. Zeile bereits daten enthalten durfte.
Das ist jetzt aber seit 0.1.5-Alpha-01 nicht mehr so. Wenn du eine alte
Tabelle weiterverwenden willst,
musst du von Hand (also mit einem Texteditor) schnell eine 3. Zeile
einfügen.
Ums dir einfach zu machen kannnst du einfach gleichviele # machen wie
die zeile überhalb. Also für mein beispiel wäre das:
name#vorname#alter str#str#int ##
nun sind all die Standardwerte einfach "nichts", also ein leerer string.
aber zurück zum Beispiel mit richtigen Standardwerten:
name#vorname#alter str#str#int meier#hans#40
Wenn du nun folgendes Statement ausführst:
INSERT into personen (vorname,alter) VALUES ('john',34);
wie du siehst wurde für die soakte name kein wert angegeben, und
deshalbt fügt er nun den standardwert ein, also sie die tabelle
nachher so aus:
name#vorname#alter str#str#int meier#hans#40 meier#john#34
Du siehst, da die Spalte name im INSERT Statement nicht angegeben wurde,
wurde für diese Spalte der Standardwert "meier"
übernommen. Diese tabelle hat nun genau EINEN Datensatz drin.
Auf den ersten blick könnte man vielleicht meinen es sind 2!
Es ist aber nur einer, denn die dritte zeile enthält ja die Standardwerte,
und die kann unter Umständen einem richtigen Datensatz sehr gleichen.