2009-04-28 11 views
0

Die Verwendung von Time.now oder Time.now.to_s oder Time.now.to_datetime wirft Fehler.Ich muss die aktuelle Zeit in einer SQL-Abfrage aktualisieren

Verwendung von Date.today hilft nicht, da es das Datum mit Uhrzeit als 12.00 Uhr und nicht den aktuellen Zeitstempel speichert.

Bitte helfen Sie mir bei der Lösung dieses Problems.

+0

Welches DB-System benutzen Sie? Postgres, MySQL, MS SQL, Oracle, Firebird, ...? – Xn0vv3r

+0

Ich benutze MySQL –

+0

Das klingt nicht gesund. Welcher Fehler wird auf Time.now geworfen? –

Antwort

1

Haben Sie eine Erklärung der Art versuchen (mit now() in der Update-Anweisung):

INSERT INTO table1 (field1, field2, field3, timestampfield) VALUES ('value1', 'value2', 'value3', now()) 

[EDIT:] Haben Sie einen Blick here for an explanation von "now()"

1

Für Update versuchen, so etwas wie:

UPDATE table1 SET mytime = now(); 

Eine weitere opt Ich für Sie, wenn Sie richtige Zeit einfügen möchten, ist es nur Funktion jetzt() für das Datetime-Feld Standard festgelegt.

+0

Ich verwendete CURRENT_TIMESTAMP, um das aktuelle Datum mit Zeitstempel zu erhalten. Es hat funktioniert. –

3

Ich bin mir nicht sicher warum und was wirft einen Fehler, aber wenn Sie versuchen, eine Datumszeichenfolge zu generieren, die SQL aus Ruby (speziell Rails hier) korrekt ist, können Sie Time.now.to_s(:db) verwenden.

+0

Ich denke, dass Sie diese Antwort ernsthaft im Vergleich zu den anderen betrachten sollten. Vielleicht möchten Sie, dass Ihr Zeitstempel eine Funktion der Uhr ist, auf der die Datenbank läuft, aber vielleicht möchten Sie, dass der Zeitstempel von dem System bestimmt wird, das den Code ausführt. Nur diese Antwort bietet diese Funktionalität. – animal

2

Ich verwendete CURRENT_TIMESTAMP, um das aktuelle Datum mit Timestamp abzurufen. Es funktionierte.

danke für Ihre Hilfe.

Verwandte Themen