MYSQL sorgusu / 1 hafta öncesinden daha eski tarihler (tüm tarihler UTC olarak belirtilmiştir)


89

1 hafta öncesinden daha eski bir tarih saatine sahip tüm kayıtları döndürmek için bir mysql veritabanını nasıl sorgulayabilirim. Tarih saat tablosunun her şeyi UTC'de sakladığını ve bunu kendi içinde karşılaştırmam gerektiğini unutmayın.

Açık olmak gerekirse - saf bir mysql sorgusu arıyorum.

Yanıtlar:


216
SELECT * FROM tbl WHERE datetime < NOW() - INTERVAL 1 WEEK

Tablonuz, veri saatlerini NOW()döndürenden farklı bir zaman diliminde saklıyorsa , UTC_TIMESTAMP()bunun yerine zaman damgasını UTC olarak almak için kullanabilirsiniz .


18
SELECT * FROM table WHERE DATEDIFF(NOW(),colname) > 7;

5
Bu kod soruyu yanıtlayabilirken, bu kodun soruyu neden ve / veya nasıl yanıtladığına ilişkin ek bağlam sağlamak, uzun vadeli değerini artırır.
JAL

bu daha kısa, bunu kullanmalı mıyım?
moeiscool

4
Belki bu daha kısadır ama bir indeksi nasıl kullanabilir?
swdev

13
SELECT SUBDATE('2008-01-02', 7);

VEYA

SELECT SUBDATE(now(), INTERVAL 1 week);

Sonuç:

2007-12-26

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.