Heim > Datenbank > MySQL-Tutorial > MySQL-Abfragedatenmethode „Heute', „Gestern', „Letzte 7 Tage', „Letzte 30 Tage', „Dieser Monat', „Letzter Monat'.

MySQL-Abfragedatenmethode „Heute', „Gestern', „Letzte 7 Tage', „Letzte 30 Tage', „Dieser Monat', „Letzter Monat'.

大家讲道理
Freigeben: 2016-11-12 10:47:09
Original
2146 Leute haben es durchsucht

Es wird gesagt, dass es einen Artikeltabellenartikel gibt, der im Feld add_time gespeichert ist. Dieses Feld ist vom Typ int(5). Jetzt müssen wir die Gesamtzahl der heute hinzugefügten Artikel abfragen und sie sortieren Die Abfrageanweisung lautet wie folgt:

  SELECT * FROM `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d');
Nach dem Login kopieren
oder:
    SELECT * FROM `article` where to_days(date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d')) = to_days(now());
Nach dem Login kopieren
Unter der Annahme, dass der Speichertyp des Felds add_time in der obigen Tabelle der Typ DATETIME oder TIMESTAMP ist, kann die Abfrageanweisung dies tun kann auch wie folgt geschrieben werden:
Informationsdatensatz von heute abfragen:
    SELECT * FROM `article` where to_days(`add_time`) = to_days(now());
Nach dem Login kopieren

Informationsdatensatz von gestern abfragen:
   SELECT * FROM `article` where to_days(now()) – to_days(`add_time`) <= 1;
Nach dem Login kopieren

Informationsdatensätze der letzten 7 Tage abfragen:
  SELECT * FROM `article` where date_sub(curdate(), INTERVAL 7 DAY) <= date(`add_time`);
Nach dem Login kopieren

Informationsdatensätze der letzten 30 Tage abfragen:
    SELECT * FROM `article` where date_sub(curdate(), INTERVAL 30 DAY) <= date(`add_time`);
Nach dem Login kopieren

Informationsdatensätze dieses Monats abfragen:
    SELECT * FROM `article` where date_format(`add_time`, ‘%Y%m&#39;) = date_format(curdate() , ‘%Y%m&#39;);
Nach dem Login kopieren

Informationsdatensätze des Vormonats abfragen:

SELECT * FROM `article` where period_diff(date_format(now() , ‘%Y%m&#39;) , date_format(`add_time`, ‘%Y%m&#39;)) =1;
Nach dem Login kopieren
Analysieren Sie mehrere Funktionen in der obigen SQL-Anweisung:

(1) to_days

Genau wie sein Name konvertiert es eine bestimmte Datums- oder Zeitzeichenfolge in den Unix-Zeitstempel, der einem bestimmten Tag entspricht, z als:
 
   mysql> select  to_days(&#39;2010-11-22 14:39:51&#39;);      
   +--------------------------------+                                                        
   | to_days(&#39;2010-11-22 14:39:51&#39;) |
  +--------------------------------+
   |                         734463 |
   +--------------------------------+
   
   mysql> select  to_days(&#39;2010-11-23 14:39:51&#39;);
   +--------------------------------+
  | to_days(&#39;2010-11-23 14:39:51&#39;) |
  +--------------------------------+
   |                         734464 |
   +--------------------------------+
Nach dem Login kopieren
Es ist ersichtlich, dass der Unterschied zwischen dem 22. und dem 23. darin besteht, dass sich die Zahl nach der Konvertierung um 1 erhöht hat. Diese granulare Abfrage ist relativ grob und erfüllt manchmal möglicherweise nicht unsere Abfrageanforderungen, daher müssen wir sie verwenden Feinkörnige Abfragemethode str_to_date-Funktion, die Verwendung dieser Funktion wird unten analysiert.

Erinnerung:

(1) to_days() wird nicht für Werte vor dem Aufkommen des Sonnenkalenders (1582) verwendet. Der Grund dafür ist, dass bei einer Änderung des Kalenders die Daten fehlen werden nicht berücksichtigt. Daher sind die Ergebnisse dieser Funktion für Daten vor 1582 (oder vielleicht für das nächste Jahr in anderen Regionen) unzuverlässig.

(2) Die Regel in MySQL „Datums- und Zeittyp“ besteht darin, den zweistelligen Jahreswert im Datum in vier Ziffern umzuwandeln. Daher werden „1997-10-07“ und „97-10-07“ als dasselbe Datum betrachtet:
   mysql> select to_days(&#39;1997-10-07&#39;), to_days(&#39;97-10-07&#39;);
     
    -> 729669, 729669
Nach dem Login kopieren
(2) str_to_date

Diese Funktion kann die Zeichenfolge „Time Translated“ vollständig konvertieren , wie zum Beispiel:
 
    mysql> select str_to_date("2010-11-23 14:39:51",&#39;%Y-%m-%d %H:%i:%s&#39;);
    
    +--------------------------------------------------------+
    | str_to_date("2010-11-23 14:39:51",&#39;%Y-%m-%d %H:%i:%s&#39;) |
    +--------------------------------------------------------+
   | 2010-11-23 14:39:51                                    |
  +--------------------------------------------------------+
Nach dem Login kopieren
Die spezifische Falloperation ist wie folgt:

select str_to_date(article.`add_time`,&#39;%Y-%m-%d %H:%i:%s&#39;)
   from article
    where str_to_date(article.`add_time`,&#39;%Y-%m-%d %H:%i:%s&#39;)>=&#39;2012-06-28 08:00:00&#39; and str_to_date(article.`add_time`,&#39;%Y-%m-%d %H:%i:%s&#39;)<=&#39;2012-06-28 09:59:59&#39;;
Nach dem Login kopieren

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage