SORU
26 EYLÜL 2013, PERŞEMBE


MySQL UTC saat dilimi için ayarlanmış olması gerekir?

Soru takip http://serverfault.com/questions/191331/should-servers-have-their-timezone-set-to-gmt-utc

MySQL zaman dilimi UTC ayarlanmalıdır sunucu veya PHP olarak aynı zaman dilimini ayarlayın. Eğer UTC değilse ()

Ne artılarını ve eksilerini?

CEVAP
29 EYLÜL 2013, Pazar


Görünen o ki bunun bir önemi yok ne zaman dilimi üzerinde sunucu kadar olan süreyi ayarlamak için geçerli saat dilimi, saat datetime sütunlar mağaza ve farkında konuları ile yaz saati.

Eğer birlikte çalıştığınız sunucular dilimleri kontrolü varsa öte yandan daha sonra her şeyi UTC içten ve asla dilimleri ve DST endişelenecek bir set alabilirsin.

Burada bazı notlar aldım bu nasıl iş dilimleri gibi bir form cheatsheet için kendime ve başkalarına olan etkisi ne olabilir dilimimi biri, seçim için kendi sunucu ve nasıl olacak mağaza tarih ve zaman.

MySQL Zaman Dilimi Cheatsheet

Notlar:

  1. Zaman dilimini değiştirmeksaklı datetime ya da değişmez zaman damgasıseçer , ama farklı datetime zaman damgası sütunları
  2. UTC, Yaz Saati, GMT (bölge) kullanmaz, GMT (saat) (GMT, UTC icat ediliyor saniye tanımı kafa karıştırıcı) değildir.
  3. Uyarı!UTC artık saniye, bu '2012-06-30 23:59:60' ve tip mi var eklenen rastgele yavaşlama nedeniyle 6 ay önceden haber ile, dünyanın dönüşü
  4. Uyarı!farklı bölgesel dilimleri aynı datetime değeri nedeniyle üretebilir Yaz Saati için
  5. Zaman damgası sütun sadece 2038-01-19 03:14:07 UTC tarihleri 1970-01-01 00:00:01 destekler
  6. Dahili MySQL timestamp column UTC ama depolanır MySQL bir tarih seçerek otomatik olarak dönüştürmek zaman geçerli oturum saat dilimi.

    Bir zaman damgası bir tarih saklarken, MySQL tarih üstlenecek geçerli oturumda ve UTC dönüştürmek olduğu zaman dilimi depolama.

  7. MySQL gibi bu datetime sütun kısmi tarihleri, saklayabilirsiniz "2013-00-00 04:00:00"
  8. MySQL" datetime sütun olarak ayarlarsanız "0000-00-00 00:00:00 mağazaları Özellikle Sen ne zaman boş izin vermek için sütun ayarla değilse NULL, oluşturun.
  9. Read this

UTC biçiminde bir zaman damgası sütun seçin

geçerli MySQL oturum saat dilimi ne olursa olsun

SELECT 
CONVERT_TZ(`timestamp_field`, @@session.time_zone, ' 00:00') AS `utc_datetime` 
FROM `table_name`

Ayrıca sever ya da küresel veya geçerli oturum saat dilimi UTC ve böylece gibi: zaman damgası seçin

SELECT `timestamp_field` FROM `table_name`

UTC geçerli tarih / saati seçmek için:

SELECT UTC_TIMESTAMP();
SELECT UTC_TIMESTAMP;
SELECT CONVERT_TZ(NOW(), @@session.time_zone, ' 00:00');

Örnek sonuç: 2015-03-24 17:02:41

Oturumda geçerli tarih / saati seçmek için zaman dilimi

SELECT NOW();
SELECT CURRENT_TIMESTAMP;
SELECT CURRENT_TIMESTAMP();

Sunucu başlatıldığında ayarlanmış zaman dilimini seçin

SELECT @@system_time_zone;

Gelirler "MSK" ya da "04:00" Moskova zaman örneğin, (veya) bir MySQL hata nerede ise ayarlamak için bir sayısal ofset değil ayarlamak günışığından faydalanma zamanı

Geçerli zaman dilimini alabilmek için

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

Eğer saat 2:00 ise 02:00:00 dönecektir.

Geçerli UNİX zaman damgası almak (saniye olarak):

SELECT UNIX_TIMESTAMP(NOW());
SELECT UNIX_TIMESTAMP();

Bir UNİX zaman damgası zaman damgası sütun olsun

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

Bir UNİX zaman damgası olarak UTC datetime sütun olsun

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, ' 00:00', @@session.time_zone)) FROM `table_name`

Bir UNİX zaman damgası, geçerli saat dilimi bir datetime

SELECT FROM_UNIXTIME(`unix_timestamp_int`) FROM `table_name`

Bir UNİX zaman damgası UTC ile bir datetime

SELECT CONVERT_TZ(FROM_UNIXTIME(`unix_timestamp_int`), @@session.time_zone, ' 00:00') 
FROM `table_name`

Zaman dilimi MySQL ayarlanmış olabilir 3 basamak vardır:

NOT: 2 formatları ayarlanabilir Bir saat dilimi:

  1. bir uzaklık UTC: '00:00', '10:00' ya da '-6:00'
  2. adında bir zaman dilimi olarak: 'Europe/Helsinki', 'BİZE Doğu/', ya da '' bir ARAYA geldi

Adında bölgeleri sadece saat dilimi bilgileri tablolar halinde kullanılabilir mysql veritabanı oluşturulmuş ve doldurulan.

dosya".". cümlesi

default_time_zone=' 00:00'

ya

timezone='UTC'

@@global.time_zone değişken

Set yaptıklarını görmek için

SELECT @@global.time_zone;

Bunun için bir değer ayarlamak için ya da kullanın:

SET GLOBAL time_zone = ' 8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone=' 00:00';

@@oturumu.time_zone değişken

SELECT @@session.time_zone;

Bunu ayarlamak için ya da kullanın:

SET time_zone = 'Europe/Helsinki';
SET time_zone = " 00:00";
SET @@session.time_zone = " 00:00";

"@@global."ve "@@oturumu.time_zone değişken time_zone" "" benim. "SİSTEM döndürebilir değişken". cümlesi

Çalışmak için zaman dilimini isimleri için (hatta varsayılan zaman dilimi için) kurulum gerekir zaman dilimi bilgi tabloları doldurulması gerekir:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

NULL döndürecektir olarak bunu yapabilirsiniz: . not:

SELECT 
CONVERT_TZ(`timestamp_field`, TIMEDIFF(NOW(), UTC_TIMESTAMP), ' 00:00') AS `utc_datetime` 
FROM `table_name`

Not: Göre docs değeri ayarlamak için time_zone değişmez, eğer set olarak "01:00" örneğin, daha sonra time_zone ayarlamak gibi bir ofset UTC eden değil takip DST, öyle sanıyorum ki kalacak aynı tüm yıl boyunca.

Daha fazla DST here ile çalışma hakkında bilgi edinin

ilgili sorular:

Kaynaklar:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Le

    Anthony Le

    10 EKİM 2006
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006