TO_CHAR() ile çalışma
İster PostgreSQL sorgunuzda güncel tarihi elde etmek ister tablonuzdaki tarihlerle çalışmak isteyin, tarihin bir dizgeye nasıl dönüştürüleceğini anlamak çok önemlidir. Belki çıktınız olarak tarih için daha güzel bir format istiyorsunuz veya tarihi bir dizeye dönüştürdükten sonra tarihin bir bölümünü çıkarmak istiyorsunuz. Durum ne olursa olsun TO_CHAR() ideal fonksiyondur.
Ayrıca TO_CHAR() kullanabileceğiniz birçok biçimlendirme seçeneği sunar. İstenilen çıktıyı elde etmek için farklı seçenekleri birleştirebilirsiniz.
TO_CHAR() aşağıdaki sözdizimini alır:
TO_CHAR(ifade, biçim);
İfade, belirtilen biçimi kullanarak dönüştürmek istediğiniz zaman damgasıdır.
Yaygın olarak kullanılan TO_CHAR() biçimleri şunlardır:
1 yıl
YYYY – Yılı 4 haneli olarak gösterir.
Y,YYY – Yıldaki dört rakamı temsil etmek için virgül kullanılır.
YYY – Belirtilen yılın yalnızca son üç hanesini gösterir.
YY – Belirtilen yılın yalnızca son iki hanesini gösterir.
VE - Yalnızca belirtilen yılın son rakamını gösterir.
2 ay
AY - Ay adı için büyük harf kullanılır.
ay - Ay adı için küçük harf kullanılır.
BENİM - Ayı büyük harflerle kısaltır.
Benim - Ayı kısaltır ve büyük harfle yazar.
MM – Sadece ay numarasını gösteriyor.
3 gün
GÜN - Büyük harfli gün adı.
gün - Küçük harfli gün adı.
SEN - Gün adını kısaltır ve büyük harfle yazar.
Onlar - Gün adını kısaltır ve büyük harfle yazar.
Sen- Küçük harflerle kısaltılmış gün adı.
4. Zaman
HH – Günün saati
HH12 – 12 saatlik format
HH24 – 24 saatlik format
BENİM - dakika
SS – Saniye
Verilen formatlar kullanabileceğiniz tek TO_CHAR() formatları değildir ancak en sık kullanılan formatlardır. Bu yazımızda örnek kullanımlarını vereceğiz.
Örnek 1: Tarihi String'e Dönüştürme
Bu örnekte ifademiz olarak hedef tarihi yazıyoruz ve hangi formata dönüştürüleceğini belirtiyoruz. Aşağıdaki çıktı “2023-11-29”u daha okunaklı ve anlaşılır bir dizeye nasıl dönüştürdüğümüzü gösteriyor:
Örnek 2: Geçerli Tarihle Çalışmak
PostgreSQL'de CURRENT_DATE size o günün tarihini verir.
Bunu bir dizeye dönüştürmek istediğimizi varsayalım. İfademiz olarak yalnızca CURRENT_DATE kullanmamız ve ardından formatımızı belirtmemiz gerekiyor. Artık geçerli tarihinizi bir dize olarak alıyorsunuz.
Yine de hedefinize ulaşmak için formatı farklı bir formatla değiştirebilirsiniz. Örneğin sadece tarih, ay ve yılı göstermek istiyorsak komutumuzu şu şekilde ayarlıyoruz:
TO_CHAR()'ın güzelliği, randevunuz için kullanmak istediğiniz son formatı oluşturmak için farklı formatları birleştirebilmenizdir. Devam edelim ve zaman damgalarıyla çalışalım.
Örnek 3: Zaman Damgasıyla Çalışmak
Şu ana kadar sadece tarihlerle çalıştık. Ancak tarihiniz saat içeriyorsa ideal formatını belirterek saati çıkartabilirsiniz.
Burada, tarihi dışarıda bırakarak, sağlanan zaman damgasından saati 24 saat biçiminde almayı belirttiğimiz bir örnek verilmiştir:
12 saatlik zaman biçimi için HH24 yerine HH12'yi kullanıyoruz. Aşağıdaki örneğe bir göz atın:
Son olarak, sağlanan zaman damgasından tarih ve saati çıkarmak istiyorsak yalnızca kullanmak istediğimiz ideal formatı eklememiz gerekir. Burada saat olarak HH12:MI:SS kullanımını belirtiyoruz ve ayırıcı ekliyoruz. Daha sonra tarih için “dd, Month, yyyy” kullanılacağını belirtiyoruz.
Son çıktımız şu şekilde:
Örnek 4: Tabloyla Çalışmak
Tartıştığımız ve bahsettiğimiz tüm formatlar PostgreSQL tablosuna uygulanabilir. Bu örnekte “tarih” sütununu içeren “siparişler” adında bir tablomuz var. Buradaki elemanları seçmek ve “tarih” sütunu için TO_CHAR() işlevini kullanmak için komutumuzu aşağıda gösterildiği gibi çalıştırıyoruz:
Dilediğiniz formatı kullanabilirsiniz. İşte aynı komut ancak farklı bir tarih formatıyla:
Tarih sütunundan yalnızca haftanın gününü ve ayı göstermek istiyorsak, komutu şu şekilde ayarlayacağız:
Davanız için çalışmak istediğiniz herhangi bir ideal formatı belirtmekten çekinmeyin.
Çözüm
TO_CHAR(), kullanıcıların zaman damgalarını ve diğer değişmez değerleri dizelere dönüştürmesine olanak tanıyan kullanışlı bir PostgreSQL işlevidir. Bu yazı, tarihler için TO_CHAR() işlevini kullanabileceğiniz farklı yolları göstermektedir. İçeriği hızlı bir şekilde kavrayabilmeniz için farklı örnekler sunduk. Umarım TO_CHAR() artık sizi rahatsız etmez.