webForumDet fria alternativet

Ta bort inlägg som är äldre än 3 mån?

Databaser & SQL

11 svar · 431 visningar · startad av pRob3

Medlem sedan maj 2003151 inlägg
Frågan#1

Hur gör man för att ta bort inlägg ur en MySQL databas som är äldre än 3 månader?

Medlem sedan okt. 20023 030 inlägg
#2

Skapar en kolumn för inläggningsdatum och tar bort alla dom är inlagda före de 3 senaste månaderna? ;)

Medlem sedan maj 2003151 inlägg
#3

Och hur skulle en sådan SQL sats se ut?

Medlem sedan okt. 20023 030 inlägg
#4

Först gör du en ny kolumn som heter t.ex. skapningsDatum.

ALTER TABLE databas.tabellnamn ADD COLUMN (skapningsDatum DATE)

Så fort du lägger till något i tabellen måste du bara komma ihåg att även sätta ett värde i skapningsDatum.

INSERT INTO databas.tabellnamn (kolumn1, kolumn2, skapningsDatum) VALUES ('kolumn1s värde', 'kolumn2s värde', NOW())

För att ta bort alla rader äldre än 3 månader:

DELETE FROM databas.tabellnamn WHERE skapningsDatum < DATE_SUB(NOW(), INTERVAL 3 MONTH)

R// Måste erkänna att jag inte är kung på SQL och detta är helt otestat men det bör funka på åtminstone mysql

Medlem sedan maj 2003151 inlägg
#5

Försökte med den här MySQL satsen:

Set Rs = Connect.Execute("FROM memb WHERE inlogg_datum < DATE_SUB(NOW(), INTERVAL 3 MONTH")

Får detta fel mess:
TCX][MyODBC]You have an error in your SQL syntax near 'FROM memb WHERE inlogg_datum < DATE_SUB(NOW(), INTERVAL 3 MONTH' at line 1

kolumnen inlogg_datum har värdet DATETIME.
Någon som vet var felet är?

Medlem sedan mars 20007 896 inlägg
#6

Du har glömt nyckelordet DELETE i SQL-frågan.

Medlem sedan maj 2003151 inlägg
#7

Vill först testa att loopa ut SQL satsen innan jag raderade från den.

Medlem sedan mars 20007 896 inlägg
#8

Då får du använda SELECT istället för DELETE, glöm inte att ha med ett fält att plocka ut också...

SELECT id FROM...
Medlem sedan maj 2003151 inlägg
#9

Nu får jag detta fel mess:
[TCX][MyODBC]You have an error in your SQL syntax near '' at line 1

SQL satsen:
Set Rs = Connect.Execute("SELECT * FROM memb WHERE inlogg_datum < DATE_SUB(NOW(), INTERVAL 3 MONTH")

Medlem sedan mars 20025 907 inlägg
#10
Set Rs = Connect.Execute("SELECT * FROM memb WHERE inlogg_datum < DATE_SUB(NOW(), INTERVAL 3 MONTH)"

r/ fel.. se korrekt nedan

Medlem sedan nov. 20017 144 inlägg
#11

Nästan

Set Rs = Connect.Execute("SELECT * FROM memb WHERE inlogg_datum < DATE_SUB(NOW(), INTERVAL 3 MONTH)")
Medlem sedan dec. 200012 464 inlägg
#12

Flyttas från ASP

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)