Datum subtrahieren und Spalte füllen

fixxxxxi

Erfahrenes Mitglied
Hallo,

ich möchte innerhalb meiner Datenbank eine neu angelegte Spalte in Bezug auf bereits belegte Spalten füllen.

Meine Struktur sieht wie folgt aus:

banID int(11) Nein
userID int(11) Nein 0
userID2 int(11) Nein 0
esepuid text Nein
country varchar(255) Nein
enddate datetime Nein 0000-00-00 00:00:00
startdate datetime Nein 0000-00-00 00:00:00
grund varchar(255) Nein n/a
grund2 text Nein
server text Nein
bannick text Nein
bannick2 text Nein
clan varchar(255) Nein
clanhp varchar(255) Nein
kick int(11) Nein 0

Die Spalte 'startdate' wurde nun neu angelegt, und soll je nach grund auf '(startdate) -365 bzw. 20 Tage)' gefüllt werden.

Also zB. UPDATE `user_banlist` SET `startdate` = '? )' WHERE `grund` = 1;

Ist das möglich? Wenn ja wie?

Liebe Grüße
 
Welches SQL? Oracle? MySQL, MS SQL....

Eigentlich ist es möglich, ich versteh nur nicht was du mit '(startdate) -365 bzw. 20 Tage)' meinst
 
Hallo,

MySQL 5.0 benutze ich... Das "enddate" ist bereits gefüllt in den Zeilen - zB. 21.06.2011 oder 13.04.2009. Nun möchte ich eben die Spalte "startdate" füllen, indem dieses startdate automatisch ermittelt wird. Also "startdate" = "enddate" (zB. 21.06.2011 oder 13.04.2009) - 365 days (Die 365 ist flexibel, da es mehrere Zeitspannen gibt.)

Es geht mir nur um die Abfrage, welche ich dann je nach "grund" absenden möchte. Nur weiß ich nicht wie ich das anstellen soll.

Es geht http:// http://www.cheatervz.com! Dort benötige ich diese Angabe in der Datenbank, da ich vorher je nach Grund, mittels PHP entweder 365 Tage oder 20 ausgegeben habe. Aber da es nun auch andere Banlängen gibt zB. 2Jahre oder bis 2059 muss ich diese Banlänge irgendwo eintragen und dazu benötige ich diese neue Spalte. Die Einträge die ich neu Eintrage, da trage ich sie bereits manuell ein - aber dies möchte ich nicht bei allen 1700 Datensätzen machen :/
 
SQL:
UPDATE user_banlist 
SET startdate = DATE_SUB(enddate, INTERVAL 1 YEAR)
-- oder startdate = DATE_SUB(enddate, INTERVAL 365 DAY)
WHERE grund = 1
 
Zuletzt bearbeitet von einem Moderator:
Zurück