Meine Konsole ist PST. Datenbankserver und gespeicherte Zeiten sind GMT.Indizierung Zeitstempel für bestimmte Zeitzone
Ich habe zum Ausführen von Abfragen in etwa so:
SELECT x,y,z
FROM tbl_msg
WHERE (msg_datetime AT TIME ZONE 'BST') BETWEEN '2016-11-21'::date and '2016-11-22'::date;
Indexing 101 sagt, dass auf msg_datetime Durchführung dieser Operation wird nun den Index vermeiden, und das ist, was ich sehe.
Also brauche ich Beratung mit einer Indexlösung dafür.
Kann ich diese Zeitzone indexieren? oder ändern Sie diese Abfrage so, dass sie diese Zeiten in BST abfragt, konvertiert in GMT?
Das ist interessant Einstellung der Zeitzone bei Verbindung. Ich habe nur das Casting "AT TIME ZONE 'XXX'" gesehen. Dies könnte die Antwort sein, die mir erlaubt, eine Zeit als BST zu übergeben und es in GMT/UTC umgewandelt zu haben, anstatt GMT/UTC zu BST zu werfen. –
Ich sehe Sie erwähnen, nicht mit BST. Das ist der ganze Grund, warum ich so werfen muss. Die Benutzer sind BST und möchten mithilfe von BST-Begriffen in der Anwendung suchen. Deshalb werfe ich die Daten als eine andere Zeitzone, weil wir eine zeitzonensensitive Konvertierung zulassen müssen, so dass diese Stunde berücksichtigt werden kann, wenn es sein muss –
Sie irren sich - Sie haben keine BST-Benutzer. Sie haben vielleicht "Europa/London" -Benutzer, die BST-Zeitzone (UTC + 1) für ein halbes Jahr (wie heute nicht, da es Winter in der nördlichen Hemisphäre ist) und GMT-Zeitzone für ein weiteres halbes Jahr (wie heute) verwenden. Sie können zum Beispiel "Europa/Warschau" Kunden haben, die CEST (UTC + 2) im Sommer und CET im Winter benutzen (was auch UTC + 1 ist). – Tometzky