# FAQ (Häufig gestellte Fragen)

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.