Evet. Kullanım durumlar vardır TIMESTAMP WITHOUT TIME ZONE.
- Yaygın işletme uygulamalarında bu tür yalnızca şunlar için kullanılır:
- Gelecekteki randevular rezervasyon
- Tokyo'daki ve Paris'teki öğleden sonraki öğleden sonraki öğleden sonra saatlerinde aynı saat dilimini temsil eder (iki ayrı dakika saat, saat aynı saat)
- Zaman çizelgesinde anları, belirli noktaları izleme için daima kullanmak
TIMESTAMP WITH TIME ZONEdeğil WITHOUT.
TIMESTAMP WITHOUT TIME ZONEdeğerlerdir değil zaman çizelgesi üzerinde bir nokta değil gerçek anlar. Potansiyel anlar, zaman çizelgesi üzerindeki muhtemel noktaları yaklaşık 26-27 saat (dünyadaki zaman dilimleri aralığı) hakkında kaba bir fikir temsil ederler . Siz bir saat dilimi veya UTC dengeleme uygulayana kadar gerçek bir anlamı yoktur .
Ör: Noel
Örneğin, tatillerin başlangıcını / kutsal günleri kaydetmeniz gerektiğini söyleyin.
Table: holiday_
Column: year_ Type: SMALLINT
Column: description_ Type: VARCHAR
Column: start_ Type: TIMESTAMP WITHOUT TIME ZONE
Noel’in bu yıl 25 Aralık’ta gece yarısından sonra başladığı gerçeğini kaydetmek için, 2016-12-25 00:00:00herhangi bir zaman dilimi olmadan söylemeliyiz . Noel Baba'nın ilk günlerinde, gece yarısından hemen sonra Auckland NZ'yi ziyaret ediyor, çünkü bu dünyanın en erken gece yarısı gecelerinden biri. Ardından bir sonraki gece yarısı olduğu gibi kısa sürede Filipinler'e ulaşacak şekilde batıya doğru ilerliyor. Sonra ren geyiği, batı yönünde ilerleyerek, Auckland'ın gece yarısından birkaç saat sonra meydana geldiği gece yarısında Hindistan'a ulaşır. Çok daha sonra hala Paris'te gece yarısı, daha sonra da Montreal'de gece yarısı. Noel Baba tarafından yapılan tüm bu ziyaretler, farklı anlarda gerçekleşiyor , ancak her bir yerin kendi gece yarısına göre hepsi gece yarısından kısa bir süre sonra gerçekleşti.
2016-12-25 00:00:00Noel'in başlangıcı olarak herhangi bir zaman dilimi olmadan kayıt yapmak bilgilendirici ve meşrudur, ancak yalnızca belirsizdir. “Auckland'da Noel” veya “Montréal'de Noel” diyene kadar, zaman içinde belirli bir anımız yok. Kızak her aşağı dokunduğunda gerçek anı kaydediyorsanız TIMESTAMP WITH TIME ZONE, WITHOUTtür yerine kullanırsınız .
Noel'e benzer Yılbaşı. Ne zaman Times Square Ball New York'ta düşer , Seattle insanlar hala kendi şampanya soğutma ve onların hazırlanıyor parti boynuzları . Yine de, Yeni Yıl anı fikrini2017-01-01 00:00:00 a TIMESTAMP WITHOUT TIME ZONE. Buna karşılık, topun New York'a ne zaman düştüğünü veya Seattle'daki insanlar boynuzlarını patladığında kaydetmek istiyorsak, bunun yerine her üç saatte bir, diğer gerçek anları kaydetmek için kullanırız TIMESTAMP WITH TIME ZONE(değil WITHOUT).
Ör: Fabrika Vardiyaları
Başka bir örnek , çeşitli yerlerde duvar saati süresini içeren bir politika kaydetme olabilir . Detroit, Düsseldorf ve Delhi'de fabrikalarımız olduğunu söyleyin. Her üç fabrikada da ilk vardiya sabah 6’da başlıyor ve 11: 30’da bir öğle yemeği molası veriyor TIMESTAMP WITHOUT TIME ZONE. Yine, bu bilgiler belirsiz bir şekilde faydalıdır, ancak bir zaman dilimi uygulayana kadar zamanın belirli bir anını göstermez. Yeni bir gün doğuda daha erken doğar. Bu yüzden, Delhi fabrikası saat 6'da ilk açılacak. Saatler sonra, Düsseldorf fabrikası sabah 6'da çalışmaya başlar. Ancak Detroit fabrikası sabah altıda bir olan 6 saat sonra başlayacak.
Bu düşünceyi (fabrika değişimleri genellikle başladığında), her bir fabrika işçisinin belirli bir günde vardiyasına başlamak için ne zaman çalıştığının tarihsel gerçeğiyle karşılaştırın. Saat girişi gerçek bir an, zaman çizelgesinde gerçek bir nokta. Böylece bunu türden TIMESTAMP WITH TIME ZONEçok bir tür sütununa kaydederdik WITHOUT.
Yani, evet, meşru kullanım durumları var TIMESTAMP WITHOUT TIME ZONE. Ancak iş uygulamaları konusundaki deneyimimde, nispeten nadirdir. İş dünyasında gerçek anları önemseriz: fatura gerçekte ne zaman geldi, bu sözleşme tam olarak ne zaman yürürlüğe girdi, o banka işlemi hangi anda yürüdü. Yani böyle yaygın durumlarda, TIMESTAMP WITH TIME ZONEtürü istiyoruz .
Daha fazla tartışma için, bkz benim cevap benzer Soru, için vardiya için Meli ben mağaza UTC zaman damgaları veya localtime'a
postgres
Postgres’lerin , zaman damgası eklerken belirtilen saat dilimi bilgilerini hiçbir zaman özellikle kaydetmediğini unutmayın .
TIMESTAMP WITH TIME ZONE
- Girdi verilerinde belirtilen herhangi bir zaman dilimi veya ofset değeri UTC'ye ayarlamak ve saklamak için kullanılır. Geçirilen bölge / ofset bilgisi daha sonra atılır. Düşünün
TIMESTAMP WITH TIME ZONEolarak TIMESTAMP WITH RESPECT FOR TIME ZONE.
- Hindistan'da bu yıl 7 Mart günü öğlen 12: 00’daki bir girdi, beş buçuk saat: 18: 30’u çıkararak gününü UTC’ye ayarlayacak.
TIMESTAMP WITHOUT TIME ZONE
- Girdi verilerinde belirtilen herhangi bir zaman dilimi veya ofset tamamen göz ardı edilir.
- Hindistan'da bu yıl 7 Mart günü öğlen 12: 00'deki girdi, bu yılın 7 Mart günü saat 12: 00'de ayar yapılmadan kaydedildi.
SQL standardı, tarih-zaman veri tipleri ve davranışlarıyla ilgili konulara nadiren değiniyor. Bu nedenle, veritabanı zamanın işlenmesinde büyük ölçüde değişiklik gösterir .