MySQL çalışır PHP'nin `date_default_timezone_set ()` bir eşdeğer var mı?

3 Cevap php

Bu PHP harika çalışıyor

date_default_timezone_set('my/timezone');

$actualDate = date('Y-m-d');

Sorguları yaparken Şimdi, ben yapmak istiyorum

INSERT INTO articles (title, insert_date) VALUES ('My Title', now())

Bu sorun now() MySQL o PHP hesaplanır (ve dolayısıyla dilimi ayarlanan karşı) yapmış olsaydı ne olacağını farklı olmasıdır.

Bir yolu var mı, MySQL için varsayılan zaman dilimini ayarlamak için bir SQL sorgusu demek?

Teşekkürler

3 Cevap

http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

Eğer SUPER ayrıcalığınız varsa, bu deyimi ile zamanında küresel sunucu zaman dilimi değerini ayarlayabilirsiniz:

mysql> SET GLOBAL time_zone = timezone;

Per-bağlantı zaman dilimleri. Bağlanan her istemci oturumu time_zone değişkeni tarafından verilen kendi zaman dilimi ayarı vardır. Başlangıçta, oturum değişken küresel time_zone değişkeni değerini alır, ama istemci bu deyimi ile kendi zaman dilimini değiştirebilirsiniz:

mysql> SET time_zone = timezone;

Eğer deneyebilirsiniz şey UTC tarih / zamanlarda tüm saklamaktır. Yani, kullanmak istiyorsunuz

date_default_timezone_set('UTC');
$actualDate = date('Y-m-d');

ve

INSERT INTO articles (title, insert_date) VALUES ('My Title', UTC_TIMESTAMP())

Sonra görüntülemeden önce kullanıcı timezone UTC tarih / zaman dönüştürmek istiyorum.

Ben genellikle Greenwich Mean Time MySQL sunucuyu ayarlayın ve sonra PHP gmdate yerine tarihini kullanın. GM Zaman her şeyi başka bir sunucuya taşımak, ya da farklı zaman dilimleri içinde 2 varsa o kadar tutar, şey tüm berbat alamadım.