Seite 1 von 1

SQL-Befehl für aktuellen "timestamp"

Verfasst: 12.05.2018 12:03
von fontane
Hallo,

ich bin am verzweifeln, den eigentlich kann es doch nicht so schwer sein.

Könnte mir jemand man behilflich sein und mir den SQL-Befehl benennen um ein selbst angelegtes Datenfeld in einer Tabelle mit dem aktuellen Datum (timestamp) zu versehen? (Die Befehlseingabe erfolgt direkt im MySQL-Dumper).

Folgendes habe ich bereits versucht:

Erfolgreich wenn ich "unixtime" bei http://www.unixtime.de definiere und direkt im SQL-Befehl eingebe:

Code: Alles auswählen

UPDATE phpbb_users SET table_name = '1462985852' WHERE user_id = '1';
Erfolglos waren nachstehende Befehle, wenn ich die "unixtime" automatisiert (=aktuell) eingeben will:

Code: Alles auswählen

UPDATE phpbb_users SET table_name = 'timestamp' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = 'TIME_NOW' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = 'TIME_NOW()' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = 'TIME(NOW)' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = TIME_NOW() WHERE user_id = '1';
UPDATE phpbb_users SET table_name = DATE_NOW() WHERE user_id = '1';
UPDATE phpbb_users SET table_name = TIMESTAMP('now') WHERE user_id = '1';
UPDATE phpbb_users SET table_name = TIMESTAMP'NOW' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = systimestamp WHERE user_id = '1';
UPDATE phpbb_users SET table_name = 'CURRENT_TIMESTAMP' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = 'current timestamp' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = 'sysdate' WHERE user_id = '1';
UPDATE phpbb_users SET table_name = table_name 'TIME_NOW' WHERE user_id = '1';
UPDATE phpbb_users SET table_name => TIME_NOW WHERE user_id = '1'
;

Nachstehender Befehl generiert zwar ein Datum, aber im Jahr 2106 (der Zeit somit weit voraus)

Code: Alles auswählen

UPDATE phpbb_users SET table_name = NOW() WHERE user_id = '1';
Eigentlch müsste doch "TIME_NOW" oder "TIME_NOW()" funktionieren, tut es aber nicht.

Vielleicht könnte mir einer der Programmierprofis behilflich sein und mir den korrekten SQL-Befehl benennen.

Einer zusätzlichen Lösung es über einen Button im myBB-Forum tätigen zu können wäre ich nicht abgeneigt.

Vielen Danke vorab.

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 12.05.2018 12:35
von canonknipser

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 12.05.2018 13:56
von fontane
Hallo canonknipser,

bei Deinem Hinweis (Link) ist leider alles in Englisch dokumentiert und kein Stichwort: "Update" zu finden :( ). Bin daher leider genauso schlau wie vorher. Mit "CURRENT_TIMESTAMP" versuchte ich es bereits, da wird mir ein bereits vorhandenes Datum (timestamp) auf "0" gesetzt.

Nun denn. Irgendwann wird sich vielleicht die Lösung finden.

Trotzdem Danke für Dein Engagement.

Edit: konnte es jetzt erfolgreich mit:

Code: Alles auswählen

UPDATE phpbb_users SET table_name = UNIX_TIMESTAMP() WHERE uid = 1;
lösen.

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 12.05.2018 14:03
von canonknipser
Ist deine Spalte denn als datetime definiert? Oder hat die ein anderes Format?

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 12.05.2018 21:28
von Dr.Death

Code: Alles auswählen

$current_time = time();
UPDATE phpbb_users SET table_name = $current_time WHERE uid = 1; 

http://php.net/manual/de/function.time.php

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 13.05.2018 10:50
von fontane
@ Dr.Death
Die von Dir definierte SQL-Anweisung bringt für die erste Anweisung folgende Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$current_time = time()' at line 1
Die zweite SQL-Anweisung bringt folgende Fehlermeldung:
Unknown column '$current_time' in 'field list'

Wie bereits geschrieben, funktioniert es mit:

Code: Alles auswählen

UPDATE phpbb_users SET table_name = UNIX_TIMESTAMP() WHERE user_id = 1;
wie von mir gewünscht.

@ canonknipser, @ Dr.Death
Danke für Eure Bemühungen und das eingebrachte Engagement mir zu helfen.

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 13.05.2018 11:41
von Dr.Death
Oh, ich dachte du könntest zwischen php und SQL Code unterscheiden....mein Fehler....

Mein Code war eher dazu gedacht die aktuelle Zeit als timestamp in eine Variable zu packen und dann in einem weiteren PHP Abschnitt dem eigentlichen SQL Statement zuzuweisen.

Ich dachte nicht, das du alles direkt in deinem phpMyAdmin oder anderen direkten SQL Fenster eingeben willst.

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 13.05.2018 12:46
von canonknipser
OK, du hast also keine datetime-Spalte, sondern ein Integer, in dem du den Wert eines Unix-Zeitstempels speichern willst und keinen echten Zeitstempel von mysql
Deswegen meine Frage
canonknipser hat geschrieben:Ist deine Spalte denn als datetime definiert? Oder hat die ein anderes Format?
Vielleicht noch ein kleiner Hinweis aus Datenmodellierungssicht: Man sollte Tabellenobjekte immer so benennen, dass man den Inhalt und ggf. auch das Datenformat aus dem Namen ableiten kann.
Aus deinem Spaltennamen table_name hätte ich niemals auf einen Zeitwert als Inhalt geschlossen. Das ist für mich eine String-Spalte, also CHAR oder VARCHAR, die den Namen einer Tabelle enthält ;)

Re: SQL-Befehl für aktuellen "timestamp"

Verfasst: 13.05.2018 13:20
von fontane
Hallo canonknipser,

Danke für die Erläuterung. SQL und PHP sind bei mir lediglich "notgedrungene Dörfer" um ehrenamtliche Foren zu betreuen.

Man muss immer dazu lernen. Der Hauptberuf nimmt aber schon viel Zeit in Anspruch.

Nochmals besten Dank für die Erläuterungen.