Ben çeşitli tarihler / süreleri depolamak gerekir (PHP / PostgreSQL) olan bir veritabanı için bir web tabanlı ön uç yazıyorum. Süreleri her zaman yerel saatle istemci tarafında girilen ve çok yerel saat görüntülenecek içindir. Depolama amaçlı, ben tamsayılar (UNIX zaman damgaları) ve UTC normalize olarak tüm tarih / süreleri depolamak. Bir özel alan doldurulur damgası gelecekte izin verilmez bir kısıtlama var, bu yüzden bir veritabanı kısıtlaması ile bu çalıştı ...
KISITLAMA not_future FİYATLARI (zaman damgası-300 <= date_part (zaman dilimi 'UTC' şimdi 'çağ', ()))
The -300 is to give 5 minutes leeway in case of slightly desynchronised times between browser and server. The problem is, this constraint always fails when submitting the current time. I've done testing, and found the following.
PostgreSQL istemci:
Şimdi SEÇ () - döndürür yerel saati düzeltin
SEÇ date_part (şimdi 'çağ', ()) - (zaman zaman dilimi olan tazminat düzelterek PHP tarih fonksiyonu içine yem değeri tarafından test) UTC de bir Unix zaman damgası döndürür
SEÇ date_part (saat diliminde artık 'çağ', () 'UTC') - batı iki zaman dilimi uzaklıklar bir unix zaman damgası döndürür, örneğin Ben GMT-2 damgası olsun, GMT +2 duyuyorum.
Ben "saat diliminde 'UTC'" bırakarak benim sorunumu çözecek tabii ki düşündüm, ama 'çağ' AFAIK hep UTC olmak içindir bir unix zaman damgası dönmek içindir eğer benim soru, niye Zaten UTC bir zaman 'çağ' düzeltilebilir? Bu bir hata mı, yoksa ben burada tanımlı / normal davranış hakkında bir şeyler eksik.