MySQL Veri Tarihi Kullanımı Hakkında
MySQL veritabanlarında veri tarihi, yapılan işlemlerin sıklıkla kullanılan ve önemli bir veri türüdür Tarih işlemleri sırasında kullanılan formatlar arasında 'YYYY-MM-DD', 'YYYY/MM/DD' ve 'DD/MM/YYYY' gibi formatlar yer alır Veritabanında kullanılan tarih formatları arasında DATE, DATETIME ve TIMESTAMP bulunur Bu formatlar arasındaki farklılıklar, sadece tarih, tarih ve saat, tarih ve saat için zaman dilimleri ile olan sorunlardır
MySQL ayrıca tarihleri farklı formlarda göstermek için DATE_FORMAT fonksiyonunu kullanır Unix zamanı ise, Unix işletim sistemi tarafından kullanılan bir zaman formatıdır Bu formatın en büyük avantajı, birleşik bir zaman standardı kullanmasıdır UNIX Timestamp, veri tarihleri için saniye cinsinden bir sayısal değer dönüştürür ve tarih işlemlerinin daha hızlı ve güvenilir bir şekilde yapılmasını sağlar
FROM_UNIXTIME fonksiyonu, Unix t
MySQL veritabanlarında veri tarihi, sıklıkla kullanılan bir veri türüdür. Veritabanlarında yapılan işlemler sırasında, özellikle zamana dayalı sorgular, bu veri tipi kullanılarak gerçekleştirilir. Bu nedenle, MySQL'de veri tarihi ile yapılan işlemleri bilmek oldukça önemlidir.
MySQL'de veri tarihleri, bazı formatlar kullanılarak kaydedilir. En yaygın kullanılan tarih formatı 'YYYY-MM-DD' formatıdır. Bunun yanı sıra, 'YYYY/MM/DD' veya 'DD/MM/YYYY' formatları da kullanılabilir. Veritabanına kaydedilen tarihler, daha sonra yapılan işlemler sırasında bu formatlardan birine dönüştürülür.
UNIX zamanı, Unix işletim sisteminde kullanılan bir zaman formatıdır. Bu formatın avantajı, birleşik bir zaman standardı kullanmasıdır, yani herkes aynı formatta tarih ve saatleri işleyebilir. UNIX zamanı, MySQL'de tarih işlemleri yapmak için sıkça kullanılır.
Tarih Formatları
MySQL'de kullanılan tarih formatları, tarihleri birleştirme, bölmeler, saat, dakika ve saniye eklemek gibi farklı kullanımlara izin verir. MySQL, DATE, DATETIME ve TIMESTAMP olmak üzere üç adet temel tarih formatı sunar. Bu formatlar arasındaki farklar şu şekildedir:
- DATE: Yalnızca tarihleri saklar.
- DATETIME: Tarih ve zamanları saklar.
- TIMESTAMP: Tarih ve zamanları saklar, ancak zaman dilimleri ile ilgili sorunlar yaşayabilir.
MySQL ayrıca tarihleri farklı formatta göstermek için DATE_FORMAT fonksiyonunu kullanır. Bu fonksiyon, tarihleri belirtilen formata göre biçimlendirir. Tarihler ve saatler için farklı biçimler mevcuttur. Bazı örnekler şunlardır:
Tarih / Saat Biçimi | Açıklama | Örnek |
---|---|---|
%Y | Yıl (4 basamaklı) | 2022 |
%y | Yıl (2 basamaklı) | 22 |
%m | Ay (0 ekli) | 08 |
%c | Ay (0 ekli olmadan) | 8 |
%d | Gün (0 ekli) | 05 |
%e | Gün (0 ekli olmadan) | 5 |
%H | Saat (24 saat) | 17 |
%h | Saat (12 saat) | 05 |
%i | Dakika | 30 |
%s | Saniye | 45 |
Tarihlerin ve saatlerin biçimlendirilmesinin yanı sıra, MySQL'de DATE_ADD fonksiyonu ile belirli bir tarih veya saat aralığına göre tarihleri değiştirebilirsiniz. Bu fonksiyon ayrıca, DATE_SUB fonksiyonu ile tarihlerde çıkarma işlemleri yapmanızı da sağlar.
UNIX Time Kullanımı
MySQL veritabanlarında tarih işlemleri yapmak için UNIX Timestamp kullanabilirsiniz. UNIX Timestamp, tarih ve saat bilgisini bir sayısal değere dönüştürür ve böylece işlemleriniz daha hızlı ve doğru bir şekilde yapılır. Bu yöntemin en büyük avantajı, farklı tarihleri MYSQL formatına dönüştürmek için kullanabileceğiniz FROM_UNIXTIME fonksiyonu ile birleşebilmesidir.
UNIX Timestamp, zaman dilimlerine değil, kaynak formatındaki tarih ve saat bilgilerine göre işlemler yapar. Böylece farklı zaman dilimlerinde yaşayan kullanıcılarınız olsa bile, tarih işlemleri hala doğru ve güvenilir olacaktır.
FROM_UNIXTIME fonksiyonu, UNIX Timestamp değerini MySQL formatına dönüştürebilir. Bu fonksiyon sayesinde, tarihi daha okunaklı hale getirebilir ve tarihleri kolayca karşılaştırabilirsiniz. Ayrıca DATE_FORMAT fonksiyonu ile tarihi istediğiniz forma dönüştürerek müşterilerinize sunabilirsiniz.
FROM_UNIXTIME Fonksiyonu
MySQL'de verilerin doğru bir şekilde sıralanması ve kullanılması için tarih formatlarına dikkat etmek önemlidir. Bunlar arasında Unix timestamp de yer almaktadır. FROM_UNIXTIME fonksiyonu, Unix timestamp'i MySQL formatına çevirmek için kullanılır. Bu fonksiyon, Unix timestamp'i saniye cinsinden okunaklı bir tarih biçimine dönüştürür.
FROM_UNIXTIME fonksiyonu, SELECT sorgusu içinde kullanılarak Unix timestamp'i dönüştürmek için kullanılır. Örneğin, FROM_UNIXTIME(1349307600) kullanarak '2012-10-04 15:00:00' tarihini alabiliriz. FROM_UNIXTIME fonksiyonu, kullanıcıların Unix timestamp'i kolayca anlayabileceği okunaklı bir formata dönüştürür ve MySQL tarafından anlaşılabilir bir formata getirir.
- FROM_UNIXTIME fonksiyonunun doğru kullanımı için Unix timestamp'in saniye cinsinden olduğundan emin olunuz.
- Fonksiyon, Unix timestamp'i MySQL formatına çevirmek için yalnızca bir kere kullanılmalıdır.
UNIX timestamp'i MySQL formatına dönüştürmenin bir diğer yolu da DATE_FORMAT fonksiyonudur. Bu fonksiyon, tarihi belirli bir formata göre yeniden düzenler ve sadece tarih değil, saat veya saniyeler gibi diğer parametreleri de ekleyebilirsiniz. Bu fonksiyonun kullanımı hakkında daha fazla bilgi için MySQL belgelerine bakabilirsiniz.
FROM_UNIXTIME Dönüşümü | DATE_FORMAT Dönüşümü |
---|---|
FROM_UNIXTIME(1349307600) | DATE_FORMAT('2012-10-04 15:00:00', '%Y-%m-%d %H:%i:%s') |
2012-10-04 15:00:00 | 2012-10-04 15:00:00 |
Örnek Kodlarla FROM_UNIXTIME Fonksiyonunun Kullanımı
FROM_UNIXTIME fonksiyonu, Unix tarihlerini MySQL formatına dönüştüren işlevsel bir fonksiyondur. Bu fonksiyon, Unix zaman damgası olarak kaydedilmiş bir tarihi kabul eder ve bu zaman damgasını MySQL tarih ve saat formatına çevirir.
Örnek olarak, Unix zaman damgası 1293683277 olan bir tarihi MySQL tarih biçiminde '2010-12-30 18:14:37' olarak dönüştürebilirsiniz. Bunun için FROM_UNIXTIME fonksiyonunu kullanarak aşağıdaki SQL sorgusunu çalıştırabilirsiniz.
Kod | Açıklama |
---|---|
SELECT FROM_UNIXTIME(1293683277) | Unix zaman damgası 1293683277 olan tarihi MySQL tarih biçiminde dönüştürür. |
Yukarıdaki SQL sorgusu çalıştırıldığında '2010-12-30 18:14:37' çıktısı alınacaktır.
FROM_UNIXTIME fonksiyonu ayrıca, tarih biçimini özelleştirmek ve istediğiniz formatı elde etmek için kullanılabilir. Örneğin, yalnızca yıl ve ay bilgisini içerecek şekilde bir tarih biçimi elde etmek isterseniz, aşağıdaki SQL sorgusunu kullanabilirsiniz.
Kod | Açıklama |
---|---|
SELECT FROM_UNIXTIME(1293683277, '%Y-%m') | Unix zaman damgası 1293683277 olan tarihi yıl ve ay bilgileri içerecek şekilde özelleştirilmiş bir tarih biçiminde dönüştürür. |
Yukarıdaki SQL sorgusu çalıştırıldığında '2010-12' çıktısı alınacaktır.
DATE_FORMAT Fonksiyonu
MySQL veritabanlarında kullanılan DATE_FORMAT fonksiyonu ile tarihleri istenilen formata çevirmek mümkündür. Bu fonksiyon kullanılarak tarihler gün, ay ve yıl olarak farklı biçimlerde düzenlenebilir. Örneğin "yyyy-mm-dd" formatı ile gün, ay ve yıl olarak sıralanabilir ya da "dd-mm-yyyy" formatında tarihleri göstermek de mümkündür.
Bu fonksiyonun kullanımı oldukça basittir. Öncelikle tarih verileri alınarak DATE_FORMAT fonksiyonu ile istenilen formatta düzenlenir. Örneğin, "SELECT DATE_FORMAT(tarih, '%d/%m/%Y') AS formatli_tarih FROM tablo_adı" sorgusu ile tarihler "gg/aa/yyyy" formatında düzenlenebilir. Bu formatta tarihlerin nasıl görüneceği belirlendikten sonra sadece "AS" ifadesi ile yeni bir tarih değişkeni oluşturulur ve bu yeni değişken kullanılarak tarihler gösterilebilir.
Format Kodu | Açıklama | Örnek |
---|---|---|
%Y | 4 haneli yıl (yılın tamamını gösterir) | 2022 |
%y | 2 haneli yıl (son 2 rakamı gösterir) | 22 |
%m | Ay numarası (01-12 arası) | 07 |
%M | Ay adı (tamamını gösterir) | Temmuz |
%d | Gün numarası (01-31 arası) | 01 |
%D | Gün adı (tamamını gösterir) | Perşembe |
Bu şekilde DATE_FORMAT fonksiyonu kullanılarak tarihler istenilen biçimde düzenlenebilir ve farklı formatlama kodları kullanılarak tarihlerin günlerini, aylarını ve yıllarını göstermek mümkün hale getirilebilir.
Zamana Dayalı Sorgular
MySQL'de zamana dayalı sorgular, zaman aralıkları üzerinde arama, ekleme ya da silme işlemlerinin gerçekleştirilmesi amacıyla kullanılan sorgulardır. Bu sorgular, verilerin belirli bir tarihte veya tarih aralığında olup olmadığını sorgulama için kullanılır. Bu tür sorgular, tablolardan verilerin çekilirken sıklıkla kullanılır.
MySQL'de zamana dayalı sorgular için kullanılan bazı fonksiyonlar bulunmaktadır. Bunların en yaygın olanı CURRENT_TIMESTAMP fonksiyonudur. Bu fonksiyon, şu anki tarih ve saati küçük bir protokol kullanarak döndürür ve UTC zaman dilimindeki saati kullanır. Bu fonksiyon, bu saati veritabanı içerisine ve tablolara eklerken kullanılabilir. Örnek kullanımı aşağıdaki gibidir:
SQL Kodu | Sonuç |
---|---|
SELECT CURRENT_TIMESTAMP(); | 2022-05-16 10:45:22 |
MySQL'de zamana dayalı sorgular yazmak için kullanılabilecek bir diğer fonksiyon da DATE_SUB ve DATE_ADD fonksiyonlarıdır. Bu fonksiyonlar, bir tarihin belirli bir tarih veya zaman aralığından önce veya sonra olup olmadığını kontrol etmek için kullanılabilir. Örneğin, bir tabloda kaydedilen son 1 saat içerisinde yapılan işlemleri görmek istediğimizde DATE_SUB fonksiyonunu kullanabiliriz:
SQL Kodu | Sonuç |
---|---|
SELECT * FROM tablo_adi WHERE tarih_alani > DATE_SUB(NOW(), INTERVAL 1 HOUR); | Güncel bir veri tabanı sorgusundan dönen sonuçlar |
Bu sorgu, tarih_alani adındaki bir sütunu kontrol eder ve geçen son 1 saat içindeki tarihler için verileri getirir.
MySQL'de zamana dayalı sorgular için kullanılabilecek diğer fonksiyonlar da vardır. Ancak, yukarıda bahsedilen fonksiyonlar sıklıkla kullanılır ve yaygın olarak bilinir. Sorguları oluştururken, doğru tarih aralığına dikkat etmek ve doğru bir şekilde formatlamak önemlidir. Doğru formatlamadan dolayı oluşabilecek hatalar, sorgulardaki sonuçları olumsuz etkileyebilir.
CURRENT_TIMESTAMP Fonksiyonu
MySQL'de, tarihe dayalı işlemler yapmak oldukça kullanışlıdır. Bu nedenle, MySQL, tarih işlemleri yapılan birçok fonksiyon sunar. Bu fonksiyonlardan biri CURRENT_TIMESTAMP fonksiyonudur. CURRENT_TIMESTAMP fonksiyonunun kullanımı oldukça basittir ve veritabanındaki mevcut saat ve tarih bilgisini çeker.
Bu fonksiyon kullanıldığında, sonuç şu formatta olacaktır: "YYYY-MM-DD HH:MM: SS". Özellikle, MySQL kullanan web geliştiricileri tarafından çok sık kullanılan bir fonksiyon olan CURRENT_TIMESTAMP, aynı zamanda, mevcut zaman ile yapılacak veri işlemlerinde de oldukça kullanışlıdır.
Örneğin, belirli bir veri setinin güncellenme tarihini takip etmeniz gerektiğinde, CURRENT_TIMESTAMP fonksiyonu kullanılabilir. Böylece, veri setinin ne zaman güncellendiği bilgisi veritabanında tutulabilir. Ayrıca, bu fonksiyon tarih ve saatleri karşılaştırırken de kullanılabilir.
Özetlemek gerekirse, CURRENT_TIMESTAMP fonksiyonu, MySQL veri tabanı yöneticileri tarafından tarih ve saat bilgisi gerektiren işlemler için çok sık kullanılan bir yöntemdir. Fonksiyon kullanılarak, mevcut tarih ve saat bilgisine kolayca erişilebilir ve veritabanında zaman-duyarlı işlemler yaparken kullanılabilir.
DATE_SUB ve DATE_ADD Fonksiyonları
MySQL veritabanlarında tarih işlemleri yapmak istediğinizde DATE_SUB ve DATE_ADD fonksiyonlarını kullanabilirsiniz. Bu fonksiyonlar tarihler üzerinde artırma veya azaltma işlemleri yapmanıza izin verir. Örneğin, bir satış işlemi gerçekleştirdiğinizde, bu işlem tarihini ve zamanını kaydederiz. Bundan sonra, bu tarih veya zaman ile ilgili belirli işlemler yapmak isteyebiliriz. Bu işlemlerin başında, birkaç gün öncesine veya ilerisine olan işlemler için tarihleri azaltma veya artırma işlemi gelir. Bu işlemleri gerçekleştirmek için DATE_SUB ve DATE_ADD fonksiyonlarını kullanabiliriz.
DATE_SUB ve DATE_ADD fonksiyonlarının kullanımı oldukça kolaydır. Bu fonksiyonlar günlük olarak bir tarih değeri ve bir aralık değeri (yani gün, saat, dakika veya saniye) alır. DATE_SUB fonksiyonu, tarih değerinden belirtilen aralığı çıkarır. DATE_ADD fonksiyonu ise tarihe belirtilen aralığı ekler. Örneğin, '2022-01-01' tarihine 3 gün eklemek için DATE_ADD('2022-01-01', INTERVAL 3 DAY) kullanabilirsiniz. Benzer şekilde, '2022-01-04' tarihinden 3 gün çıkarmak için DATE_SUB('2022-01-04', INTERVAL 3 DAY) kullanabilirsiniz. DATE_SUB ve DATE_ADD fonksiyonları, tarih değerlerini saat, dakika ve saniye gibi mikro detaylarda da manipüle edebilir.
DATE_SUB ve DATE_ADD fonksiyonlarının daha iyi anlaşılması için birkaç örnek verelim:
Veri | DATE_SUB Fonksiyonu | DATE_ADD Fonksiyonu |
---|---|---|
2022-01-01 | 2021-12-29 | 2022-01-04 |
2022-01-31 | 2022-01-26 | 2022-02-05 |
2022-02-28 | 2022-02-24 | 2022-03-05 |
Yukarıdaki örneklerde gördüğünüz DATE_SUB ve DATE_ADD fonksiyonları tarih manipülasyonu yapmak için kullanılabilir. Bu fonksiyonlar, veritabanınızda yer alan tarih verilerinin doğruluğunu ve tutarlılığını korumanıza yardımcı olur.
Distance Verileri Kullanımı
MySQL veritabanlarında yapılan işlemler arasında distance verilerinin kullanımı da yer alır. Distance verisi, iki nokta arasındaki mesafeyi ifade eder ve coğrafi verilerin işlenmesinde oldukça önemli bir rol oynar. Bu verilerin kullanımı, MySQL'de bazı özel formüller ve fonksiyonlar kullanılarak gerçekleştirilir.
Öncelikle, geolocation verilerinin kaydedilmesi gerekir. Bu verilerin kaydedilmesi için en sık kullanılan yöntem, enlem ve boylam verilerinin kullanıcı tarafından gönderilmesidir. Bu veriler, FLOAT veya DOUBLE türünde bir sütun içerisinde saklanabilir. Daha sonra, Haversine formülü kullanılarak distance hesaplamaları gerçekleştirilir.
Column | Data Type | Description |
---|---|---|
id | INT(11) | Geolocation verisinin tekil id'si |
lat | FLOAT | Enlem verisi |
lng | FLOAT | Boylam verisi |
- Geolocation Verilerinin Kaydedilmesi: Geolocation verilerinin kaydedilmesi için uygun bir sütun yapısı seçmelisiniz. Enlem ve boylam verileri FLOAT veya DOUBLE türünde bir sütun içerisinde saklanabilir.
- Haversine Formülü: Haversine formülü, iki nokta arasındaki mesafeyi hesaplamak için kullanılır. Bu formül; enlem ve boylam verilerinin radyan cinsinden değerlere dönüştürülmesi, formül kullanılarak mesafenin hesaplanması ve sonuçların çıktıya dönüştürülmesi adımlarından oluşur.
- Örnek Kodlarla Haversine Formülünün Kullanımı: Örnek kodlar kullanarak Haversine formülünün kullanımı anlatılacak. Bu örnekler, gerçek hayatta kullanılabilecek durumlar üzerine kurulacak ve bu sayede okuyucuların konuyu daha iyi anlamasına yardımcı olacak.
Geolocation Verilerinin Kaydedilmesi
MySQL veritabanında geolocation verileri kaydedilirken, bu tür verilerin doğru bir şekilde işlenebilmesi için iki önemli faktör dikkate alınmalıdır. Bunlardan ilki, geolocation verilerinin doğru bir şekilde formatlanmasıdır. İkincisi ise, verilen bu geolocation verilerinin kullanımının ölçeği ve seçilen data tipine bağlıdır.
Geolocation verilerinin çoğunlukla enlem ve boylam koordinatları şeklinde kaydedildiği göz önünde bulundurulduğunda, kullanıcıların geolocation verilerini kaydetmek için en uygun ve popüler seçenek Google Maps API'sidir. Google Maps API, kullanıcılara sağladığı detaylı özelliklerle birlikte, alınan koordinatların doğru bir şekilde alınmasını sağlar ve verilen bu koordinatların haritalar üzerinde görüntülenmesine olanak tanır.
Geolocation verilerinin kaydedilirken, enlem ve boylam koordinatları ayrı ayrı sütunlarda saklanır. Bu sayede, verilerin daha okunaklı ve daha rahat işlenebilmesi sağlanmış olur. Veritabanında geolocation verilerinin saklama işlemi yapılırken, varchar veya double gibi bir veri tipi seçilebilir.
Örneğin, bir kullanıcının coğrafi konum verisini kaydetmek için enlem ve boylam koordinatlarını kullanırsak, 'latitude' ve 'longitude' isimli iki sütun oluşturabiliriz. Bu sütunlar varchar veya double veri tipine sahip olabilir. Ancak, double veri tipi daha sık tercih edilir, çünkü bu, verilerin matematiksel işlemlerle daha kolay bir şekilde işlenebilmesine olanak tanır.
Haversine Formülü
Haversine formülü, iki konum arasındaki mesafeyi hesaplamak için kullanılan bir formüldür. Bu formül, Dünya'nın yüzeyindeki mesafeyi hesaplamak için kullanılabilir.
Bu formül, birçok harita uygulamasında ve GPS cihazlarında kullanılır. Formül, elipsoid olarak kabul edilen Dünya'nın şeklini ve her şeyden önce iki nokta arasındaki yatay boylam ve dikey enlem farkını kullanarak mesafeyi hesaplar.
Bu formül, bir daire üzerinde olduğunuzu varsayarak mesafeyi hesaplar, ancak Dünya'nın yuvarlak şekli nedeniyle bu çoğu zaman doğrudur. Bu formülün kullanımında dikkat edilmesi gereken birkaç faktör vardır. Bunlardan biri, özellikle uzun mesafeler için bu formülün hassas olmasıdır.
Bu formülün kullanımı hem Türkiye'de hem de dünyanın diğer birçok yerinde oldukça yaygındır. Bu nedenle, Haversine formülünün kullanımının açıklanması, MySQL'de verilerin mesafesinin hesaplanması için oldukça yararlı olacaktır.
Örnek Kodlarla Haversine Formülünün Kullanımı
Haversine formülü, iki koordinat arasındaki mesafeyi hesaplamak için kullanılır. Bu formülün kullanımı ile birlikte, birçok uygulama mesafeye dayalı işlemler gerçekleştirebilir. Aşağıda, Haversine formülü kullanarak mesafe hesaplama örnekleri verilmiştir.
Koordinat 1 | Koordinat 2 | Mesafe |
---|---|---|
(41.0082° N, 28.9784° E) | (38.7223° N, 35.4853° E) | 890.7 km |
(52.5200° N, 13.4050° E) | (48.8566° N, 2.3522° E) | 878.6 km |
Yukarıdaki örneklerde görüldüğü gibi, Haversine formülü sayesinde farklı koordinatlar arasındaki mesafe hesaplanabilir. Bu formülü kullanarak, birçok uygulama örneğin konum bazlı arama işlemleri gerçekleştirebilir.
Aşağıdaki örnek kodlar kullanarak Haversine formülünün nasıl kullanılacağını detaylı bir şekilde inceleyebilirsiniz:
- Örnek 1:
SELECT *, 6371 * 2 * ASIN(SQRT( POWER(SIN((lat - abs(41.0082)) * pi()/180 / 2),2) + COS(lat * pi()/180 ) * COS(abs(41.0082) * pi()/180) * POWER(SIN((lon - 28.9784) * pi()/180 / 2), 2) )) as distance FROM locations HAVING distance <= 50
SELECT *, get_distance(41.0082,28.9784,lat,lon) as distance FROM locations HAVING distance <= 50
Haversine formülü ile mesafe hesaplama işlemleri gerçekleştirirken, aynı zamanda SQL sorguları kullanarak da bu işlemleri yapabilirsiniz. Örnek kodları inceleyerek, Haversine formülünü kullanarak mesafe hesaplama işlemlerini kolayca gerçekleştirebilirsiniz.