Oracle SQL’de yy
ve rr
Tarih Maskelerini Anlamak
Oracle SQL’de tarih formatları ile çalışırken sıkça karşılaşılan bir soru ortaya çıkar: Oracle’ın yy
ve rr
tarih maskeleri arasındaki fark nedir? Bu farkı anlamak, özellikle iki basamaklı yıl formatlarıyla çalışırken, sorgularınızın döndürdüğü sonuçları dramatik bir şekilde etkileyebilir. Bu tarih maskelerini inceleyelim ve neden farklı sonuçlar ürettiklerini netleştirelim.
Problemin Açıklaması
Oracle SQL’de tarih manipülasyonları veya karşılaştırmaları yaparken, dizeleri tarih formatlarına dönüştürmeniz gereken durumlarla karşılaşabilirsiniz. Bu amaçla genellikle yy
ve rr
tarih maskeleri kullanılır.
İşte bu maskelerin farklarını gösteren iki örnek:
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/yy');
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/rr');
Bu iki sorgu çalıştırıldığında, “81” yılının yorumlanmasına bağlı olarak farklı sonuçlar döndürebilir.
Tarih Maskelerini İnceleme
yy
Tarih Maskesi
- Tanım:
yy
maskesi iki basamaklı bir yılı girmeye izin verir. - Yorumlama: Oracle, iki basamağın mevcut yüzyıla ait olduğunu varsayar.
- Örneğin, eğer mevcut yıl 2023 ise,
01/05/81
tarihi2081
yılı olarak yorumlanır.
- Örneğin, eğer mevcut yıl 2023 ise,
- Kullanım Durumu: Bu, özellikle 20. yüzyıla atıfta bulunan tarihler için beklenmedik sonuçlar doğurabilir.
rr
Tarih Maskesi
- Tanım:
rr
maskesi de iki basamaklı yılları kabul eder fakat bunları yorumlamak için farklı bir yöntem kullanır. - Yorumlama: İki basamaklı yıllar tam yılı belirlemek için yuvarlanır:
- 50-99:
1950-1999
yılları olarak kabul edilir. - 00-49:
2000-2049
yılları olarak kabul edilir.
- 50-99:
- Örnek: Böylece,
01/05/81
tarihi1981
olarak yorumlanır ki, bu çoğu durumda beklenen referanstır.
Örneklerin Özeti
İşte bu maskelerin çıktıyı nasıl etkilediğine dair bir özet:
yy
kullanan sorgu:01/05/81
tarihinin2081
olduğunu varsayar ki bu büyük ihtimalle karşılık gelen bir işe alım yoktur.
rr
kullanan sorgu:- Aynı tarihi
1981
olarak görür ki, bu muhtemelenemp
tablosunda işe alım kayıtlarına sahiptir.
- Aynı tarihi
Sonuç
Oracle SQL sorgularında tarihlerle çalışırken yy
ve rr
arasındaki farkları anlamak oldukça kritik öneme sahiptir. yy
gelecekteki yılların yanlış yorumlanmasına yol açarken, rr
maskesi yuvarlama kuralları ile iki basamaklı yılları dönüştürmek için daha mantıklı bir yaklaşım sağlar.
Doğru maskeyi seçmek, istemeden veri dışlamanın önüne geçebilir ve SQL sorgularınızın istenen sonuçları vermesini sağlayabilir. Tarih verileri ile ilgili çoğu durumda, netlik ve doğruluk için rr
maskesi önerilir.
İki basamaklı yıllarla çalışırken, verinizin bağlamını ve mevcut yılı dikkate aldığınızdan emin olun; böylece yanlış yorumlama ve hata yapma riskinizi azaltırsınız.