Wie speichere ich das Ablaufdatum einer Kreditkarte, wenn es nur aus Monat und Jahr besteht?
Das Datumsfeld in MySQL akzeptiert das folgende Format: JJJJ-MM-TT. Ein Ablaufdatum ohne einen Tag ist nicht ungültig, wenn dieses Format verwendet wird.
Benutze ich stattdessen varchar? Und hindert mich das nicht daran, Berechnungen durchzuführen, um zu bestimmen, wann Karten ablaufen und was nicht?
Für Januar 2014:
%Vor%Es ist üblich, 00 für Monat und Tag zu verwenden, die nicht definiert sind. Aus dem MySQL-Referenzhandbuch :
Einige Datumsfunktionen können mit "Null" -Daten oder unvollständigen Daten wie "2001-11-00" verwendet werden, andere dagegen nicht. Funktionen, die Teile von Daten extrahieren, arbeiten normalerweise mit unvollständigen Daten und können daher 0 zurückgeben, wenn Sie andernfalls einen Wert ungleich Null erwarten. Zum Beispiel:
%Vor%
und später im Handbuch für DATE_FORMAT
:
Bereiche für Monat und Tag Spezifizierer beginnen mit Null aufgrund der Tatsache, dass MySQL das Speichern von ermöglicht unvollständige Daten wie "2014-00-00".
Sie können immer die Funktion LAST_DAY
verwenden, um den letzten Tag des Monats einzufügen.
Zum Beispiel:
SELECT LAST_DAY('2011-02-01')
Würde in 2011 2011-02-28 ergeben. Im Allgemeinen möchten Sie den letzten Tag des Monats für eine Kreditkarte, da dies der tatsächliche letzte Tag ist, der gültig ist.
Verwenden Sie einfach den ersten Tag des Monats, wenn Sie im Standard-Datumsformat speichern. Es ist praktisch, das Datumsformat für Konvertierungen, Vergleiche usw. zu haben.