Update-Befehl

rheimberg

Benutzer
Beiträge
7
Tabelle: user
Spalte: lastonline
Format der Spalte in der Datenbank: 1483615966
Format Webseite: 05.01.2017, 12:32

Ich möchte nun die Spalte status updaten welche in der Tabelle user vorhanden ist zu folgenden Bedingungen:

Wenn das lastonline Datum älter als 7 Tage ist, soll die Spalte status auf 0 gesetzt werden

Jmd. ne Idee wie ich das hinkriege?

danke und mfg
 
Werbung:
mit php

$date = new DateTime('05.01.2017 12:32');
$timestamp = strtotime($date->format('Y-m-d H:i:s'));

ist ungetestet sollte aber funktionieren. Eventuell brauchst du das Datum vorher gar nicht formatieren.
 

Das ist hier nicht gefragt, und dein Code ändert auch nix in der DB.

An den Fragesteller: verwende passende Datentypen. Wenn Du lastlogin hast brauchst Du kein extra Feld für Status, welches Du setzt, wenn der lastlogin ein bestimmtes Alter erreicht hat. Das wäre dann redundant und das will man nicht. Dieser 'Status' ist jederzeit per Abfrage ermittelbar.
 
@akretschmer

Nicht das was ich meine also:

Ich habe eine Tabelle die heisst User
Darin gibt es zwei verschiedene Spalten
Spalte 1 heisst status, kann auf 0 gesetzt werden dadurch wird der User deaktiviert
Spalte 2 heisst lastonline, Format: unix_timestamp
 
Ich will nun mit dem Update Befehl den Inhalt von der spalte Status auf 0 setzen wenn das Datum in der spalte lastonline mehr als 7 Tage sich vom aktuellen Timestamp unterscheidet
 
Zuletzt bearbeitet:
[ ] Du hast verstanden.

Code:
test=# select '2017-01-03' < current_date - 4;
 ?column?
----------
 f
(1 row)

test=*# select '2017-01-01' < current_date - 4;
 ?column?
----------
 t
(1 row)

Du brauchst keine extra Spalte, um das zu speichern. Und falls Du es doch machen willst, so verwende halt eine passende WHERE-Condition im Update. Und damit das schmerzfreier geht, passende Datentypen.
 
Update user set status = 0 where lastonline < current_date - 1

Klappt nicht, last online hat ein Datum vom 5 Januar drinn, sollte den status updaten wen ich den Befehl oben ausführe nicht?

Bin noch ein Noob in diesem Bereich und den Code oben verstehe ich nicht

Danke schonmal für deine Hilfe
 
Gratulation!

Du hast nun die falsche Lösung weiter zementiert. Du verwendest weiterhin falsche Datentypen und hast nun redundante Daten, die je nach Mondstand gültig sind oder auch nicht, denn der Status stimmt nur, wenn unmittelbar vorher das Update lief. Irgendwann wird Dir das also nun mit noch mehr Wums, Kraft und Schmerz auf die Füße fallen. Lernen durch Schmerzen - ein durchaus bewährtes Konzept.
 
Auf dummes Gelabber kann ich verzichten und unter Hilfe verstehe ich was anderes?
Es funktioniert, ist mir auch klar, dass wollte ich so, wird automatisiert via cronjob der täglich läuft
 
Werbung:
Zurück
Oben