2012-03-26 7 views
1

Ich versuche, einen Zeitstempel mit nur Datum zu erstellen. das ist, was ich zur Arbeit bekomme.Wie erstellt man einen Zeitstempel mit nur Datum in MySQL?

create table verses 
( 
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    username VARCHAR(255), 
    content VARCHAR(1023), 
    time DATE 
); 

insert into verses (username, content, time) 
values ('test', 'blbabblabalbla', CURDATE()); 

dies funktioniert, aber ich muss die Zeit jedes Mal einfügen. Gibt es eine Möglichkeit, dies automatisch zu tun? ähnlich wie wenn wir TIMESTAMP verwenden? habe ich versuchen, dies aber nicht funktioniert hat

create table verses 
( 
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    username VARCHAR(255), 
    content VARCHAR(1023), 
    time CURDATE(TIMESTAMP) 
); 
+0

Also, können Sie Timestamp Typ verwenden? Es scheint, dass Sie sagen, dass Sie versucht haben, Zeitstempel zu verwenden, und es hat nicht funktioniert. –

+0

wenn Sie Zeitstempel verwenden möchten, versuchen Sie dies: CREATE TABLE Verse ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, username VARCHAR (255), Inhalt VARCHAR (1023), 'Time' TIMESTAMP ); –

+0

Ich möchte keinen Zeitstempel, weil ich nur das Datum, nicht die Uhrzeit möchte. – ordinaryman09

Antwort

0

statt DATE Typ mit Datetime Versuchen Sie auch Zeit zu speichern. Verwenden Sie die NOW() - Funktion anstelle von DATE(), um Datum mit Uhrzeit einzufügen. Siehe link als Referenz.

+0

Das OP fragt, wie man einen Standardwert einstellt, nicht die Uhrzeit. Ich denke, es war nur eine falsch formulierte Frage. –

+0

Danke, irgendwie verpasst das :) –

+0

ja Ich bin auf der Suche nach dem Standardwert, sorry für die Verwirrung. – ordinaryman09

0

Theoretisch könnten Sie den Standardwert, wie folgt festgelegt:

create table verses (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    username VARCHAR(255), content VARCHAR(1023), time DATE DEFAULT CURDATE()); 

Es scheint jedoch, dies in mySQL nicht möglich ist:

Die DEFAULT-Klausel gibt einen Standardwert für eine Spalte . Bei einer Ausnahme von muss der Standardwert eine Konstante sein. Es kann keine Funktion oder ein Ausdruck sein.

Sie müssen also entweder eine TIMESTAMP verwenden oder diese manuell pflegen, sorry. Technisch ist dies immer noch manuell, aber Sie könnten den automatischen Prozess mit einem trigger

1

emulieren. Sie müssen Ihr Feld auf datetime statt date einstellen.

auch Dokumentation sagt:

Ab MySQL 5.6.5, Zeitstempel- und DATETIME- Spalten automatisch auf das aktuelle Datum und die Uhrzeit initializated und aktualisiert werden [...]

Und auch :

Für jede TIMESTAMP- oder DATETIME-Spalte in einer Tabelle können Sie den aktuellen Zeitstempel als Standardwert, den automatischen Aktualisierungswert oder beides zuweisen. Eine automatisch initialisierte Spalte wird auf den aktuellen Zeitstempel für eingefügte Zeilen gesetzt, die keinen Wert für die Spalte angeben. [...]

Wenn Sie weitere Informationen dazu benötigen, beziehen Sie sich auf die official documentation.

+0

Ich sehe, ich benutze MySQL 5.1.44, ich versuchte Ihren Ansatz, aber hat nicht funktioniert, gibt es eine Möglichkeit, einen ähnlichen Ansatz in MySQL 5.1.44 zu bekommen? – ordinaryman09

0

Sie können einen BEFORE INSERT-Trigger erstellen und immer 'CURDATE' für das Feld time festlegen.

1

einfachste Weg Datum einfügen (jetzt()) anstelle von Quark()

Verwandte Themen