Ich bin auf eine Abfrage gestoßen, die mich neugierig macht, ob der Programmierer Showboating war oder ob es einen Verdienst gibt, wie es in Bezug auf die Leistung getan wurde. Ich habe keine Ahnung, warum die Ab-Zeit 01:59 anstatt 00:00 ist, das würde tatsächlich einige der Ergebnisse entfernen, die eigentlich aufgenommen werden sollten.Wo Datum zwischen a und b Leistung
Dies ist die where-Klausel der Abfrage
WHERE REPORTDATE BETWEEN TRUNC(SYSDATE - 21) + 01/24 + 59/(24 * 60) + 59/(24 * 60 * 60)
AND TRUNC(SYSDATE) + 23/24 + 59/(24 * 60) + 59/(24 * 60 * 60)
und wenn meine Mathe richtig ist, so ist die gleiche
WHERE REPORTDATE BETWEEN to_date('13/04/2017 01:59','dd/mm/yyyy hh24:mi')
AND to_date('04/05/2017 23:59','dd/mm/yyyy hh24:mi')
Gibt es einen Vorteil in der ersten berechnet, wo Klausel über die zweiten ?
ich kann nicht einen Weg vorstellen, dass die erste Abfrage effizienter sein könnte, aber ich weiß Oracle nicht von innen nach außen. Ist es möglich, die Person zu fragen, die die ursprüngliche Abfrage geschrieben hat? Es gibt viele Entwickler, die in SQL nicht sehr stark sind und die Datumsfunktionen in SQL nicht einmal kennen. – RToyo
Das erste muss nicht neu geschrieben werden, wenn Sie es an einem anderen Tag ausführen. –
Haben Sie versucht, die Erklärungsebene von beiden zu erzeugen, um die Unterschiede tatsächlich zu sehen? –