SQL Alle records ouder dan 30 dagen ophalen

Nu heb ik veel vergelijkbare SO-vragen gevonden, waaronder een oude van mij, maar wat ik probeer te doen is een record ouder dan 30 dagen te krijgen, maar mijn tabelveld is unix_timestamp. Alle andere voorbeelden lijken DateTime-velden of zoiets te gebruiken. Ik heb er een paar geprobeerd en kreeg ze niet aan het werk.

Dit werkt hieronder zeker niet. Ook wil ik geen datum tussen een tussendatum, ik wil alle records na 30 dagen van een unix-tijdstempel dat in de database is opgeslagen.
Ik probeer inactieve gebruikers te verwijderen.

eenvoudige voorbeelden.. werkt niet.

SELECT * from profiles WHERE last_login < UNIX_TIMESTAMP(NOW(), INTERVAL 30 DAY)  

En probeerde dit

SELECT * from profiles WHERE UNIX_TIMESTAMP(last_login - INTERVAL 30 DAY) 

Niet te sterk voor complexe datumquery’s. Alle hulp wordt op prijs gesteld.


Antwoord 1, autoriteit 100%

Probeer zoiets als:

SELECT * from profiles WHERE to_timestamp(last_login) < NOW() - INTERVAL '30 days' 

Citaat uit de handleiding:

Er is ook een to_timestamp-functie met één argument beschikbaar; het accepteert een argument met dubbele precisie en converteert van Unix-tijdperk (seconden sinds 1970-01-01 00:00:00+00) naar tijdstempel met tijdzone. (Integer Unix-tijdperken zijn impliciet gegoten voor dubbele precisie.)


Antwoord 2, autoriteit 38%

Tenzij ik iets heb gemist, zou dit vrij eenvoudig moeten zijn:

SELECT * FROM profiles WHERE last_login < NOW() - INTERVAL '30 days';

Antwoord 3, autoriteit 3%

Wat dacht je van

SELECT * from profiles WHERE last_login < VALUEOFUNIXTIME30DAYSAGO

of

SELECT * from profiles WHERE last_login < (extract(epoch from now())-2592000)

Bekijk dit bericht:

https://dba.stackexchange .com/questions/2796/how-do-i-get-the-current-unix-timestamp-from-postgresql

en dit

http://www.epochconverter.com/

Other episodes