Ana Sayfa Haberler MySQL’de Tarihler ve Saatler Nasıl Etkili Çalışılır

MySQL’de Tarihler ve Saatler Nasıl Etkili Çalışılır

376
0

MySQL’de çalışma ile tarih ve saati yönetmek ve zamanla ilgili veritabanı sorgularını belirlemek için ihtiyacınız olan tüm komutları öğrenin.

Tarihler ve saatler önemlidir, işleri düzenli tutmaya yardımcı olur ve herhangi bir yazılım işleminin ayrılmaz bir parçasıdır. Veri tabanı içinde onlarla verimli bir şekilde çalışmak, çeşitli zaman dilimlerinde çalışıyor olsun, tarih ekleme/çıkarma ve diğer işlemler olsun, bazen kafa karıştırıcı görünebilir. Veritabanınızdaki tarihleri/saatleri kolayca işlemek ve yönetmek için kullanılabilen çeşitli MySQL işlevlerini öğrenin.
İlişkili: Yeni Başlayanlar İçin MySQL Kılavuzu

MySQL’de Çalışma ile tarih ve saati yönetmek

Saat Dilimleriyle Çalışma

download 1 1

 

Her şeyi standart hale getirmeye yardımcı olmak için, yalnızca UTC saat dilimindeki tarihler/saatlerle çalışmalısınız. MySQL veritabanına her bağlantı kurduğunuzda, aşağıdaki SQL deyimi ile yapılabilecek saat dilimini UTC olarak değiştirmelisiniz:

SET TIME_ZONE = '+0:00'

Artık tüm tarihler UTC’de kaydedileceğinden, neyle çalıştığınızı her zaman bilirsiniz. Bu da işleri daha basit ve anlaşılır hale getirir.

Gerektiğinde kullanışlı CONVERT_TZ() MySQL işleviyle herhangi bir tarih/saat/zaman damgası değerinin saat dilimini kolayca dönüştürebilirsiniz. Önce ofseti bilmeniz gerekir, örneğin, Kuzey Amerika’nın batı kıyısındaki PST UTC -08:00’dir, böylece şunları kullanabilirsiniz:

SELECT CONVERT_TZ('2022-03-21 21:47:23', '+0:00', '-8:00');

Bu tamamen doğru olan 2022-03-04 13:47:23 ile sonuçlanır. CONVERT_TZ() öğesine iletilen üç bağımsız değişken , ilk olarak başladığınız tarih saat/zaman damgasıdır (şimdiki zaman için kullanın()), ikincisi her zaman ‘+0:00’ olacaktır, çünkü tüm tarihler veritabanında UTC’ye zorlanır, ve sonuncusu, tarihi dönüştürmek istediğimiz uzaklıktır.

MySQL‘de çalışma ile Tarih Ekle / Çıkar download 2

Çoğu zaman, örneğin bir hafta öncesinden kayıtları almanız gerekiyorsa, tarihlere eklemeniz veya çıkarmanız gerekir.

Neyse ki MySQL, bu görevi son derece kolaylaştıran mükemmel DATE_ADD() ve DATE_SUB() işlevlerine sahiptir. Örneğin, SQL deyimiyle geçerli tarihten iki hafta çıkarabilirsiniz:

SELECT DATE_SUB(now(), interval 2 week);

Bunun yerine, mevcut bir zaman damgasına üç gün eklemek isterseniz, şunları kullanırsınız:

SELECT DATE_ADD('2022-03-22 11:52:06', interval 3 day);

Her iki işlev de aynı şekilde çalışır, ilk bağımsız değişken, başladığınız zaman damgasıdır. İkinci bağımsız değişken, toplama veya çıkarma aralığıdır. İkinci argüman her zaman aynı şekilde biçimlendirilir, ardından kelime aralığı, ardından sayısal bir değer ve aralığın kendisi aşağıdakilerden herhangi biri olabilir: saniye, dakika, saat, gün, hafta, ay, çeyrek, yıl.

Başka bir örnek için, son 34 dakika içinde gerçekleşen tüm oturumları almak istiyorsanız; aşağıdaki gibi bir SQL ifadesi kullanabilirsiniz:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Gördüğünüz gibi, bu, oturum açma tarihi mevcut saatten 45 dakika veya diğer bir deyişle son 45 dakikadan daha büyük olan oturum açmalar tablosundaki tüm kayıtları alır.

images 1

Tarihler Arasındaki Farkı Alın

Bazen iki tarih arasında ne kadar zaman geçtiğini anlamanız gerekir. Aşağıdaki SQL deyimi gibi DATEDIFF işleviyle iki farklı tarih arasındaki gün sayısını kolayca alabilirsiniz:

SELECT DATEDIFF(now(), '2022-03-21');

DATEDIFF işlevi, her ikisi de tarih/zaman damgası olan iki bağımsız değişken alır ve aralarındaki gün sayısını verir. Yukarıdaki örnek, 15 Aralık 2020’den bugüne kadar geçen gün sayısını gösterecektir.

İki tarih arasındaki saniye sayısını almak için TO_SECONDS() işlevi kullanışlı olabilir, örneğin:

SELECT TO_SECONDS(now()) - TO_SECONDS('2022-03-21 11:56:41');

Bu, sağlanan iki tarih arasındaki saniye sayısını verir.

Tarihlerden Segment Çıkarma

Yalnızca ayı, yılın gününü veya saati istemeniz gibi, tarihlerden belirli bölümleri kolayca çıkarmanıza izin verir. İşte bu tür işlevlere birkaç örnek:

SELECT MONTH('2021-02-11 15:27:52');
SELECT HOUR(now());
SELECT DAYOFYEAR('2021-07-15 12:00:00');

Yukarıdaki SQL ifadeleri , geçerli saat olan 02 ve 15 Eylül yılın 196. günü olduğu için 196 ile sonuçlanırBurada, her biri yalnızca bir argüman alan, tarihin çıkarıldığı tüm tarih çıkarma işlevlerinin bir listesi:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Örneğin, yalnızca tüm kullanıcıların oluşturulduğu ayı ve yılı almak istiyorsanız; aşağıdaki gibi bir SQL ifadesi kullanabilirsiniz:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Bu, users tablosundaki tüm kayıtları alır ve her kullanıcının oluşturulduğu id#, ay ve yılı gösterir.

Kayıtları Tarih Döneme Göre Gruplama

Tarih işlevlerinin mükemmel bir kullanımı, SQL ifadelerinizde GROUP BY kullanarak kayıtları tarihe göre gruplandırma yeteneğidir. Örneğin, 2020’deki tüm siparişlerin toplam tutarını aya göre gruplandırmak isteyebilirsiniz. Aşağıdaki gibi bir SQL ifadesi kullanabilirsiniz:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN 

'2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Bu, 2020 yılında verilen tüm siparişleri alacak. Oluşturuldukları aya göre gruplandıracak ve yılın her ayında sipariş edilen toplam tutarı gösterecektir.

Lütfen daha iyi dizin performansı için , SQL deyimlerinin WHERE yan tümcesinde YEAR() gibi tarih işlevlerini kullanmaktan kaçınmanın ve bunun yerine yukarıdaki örnekte gösterildiği gibi BETWEEN operatörünü kullanmanın her zaman en iyisi olduğunu unutmayın.

Bir Daha Asla Tarihlerle Karıştırmayın

Yukarıdaki bilgileri kullanarak, artık çok çeşitli kullanım durumlarında MySQL’de tarih ve saati yönetmek verimli bir şekilde çalışabilir, çeviri yapabilir ve işlemler gerçekleştirebilirsiniz.

Basitlik için tarihlerle çalışırken her zaman UTC’yi kullanmayı unutmayın. İster basit hesaplamaları tamamlamak ister tarih dönemlerine göre gruplandırılmış raporları kolayca almak olsun. Yazılımınızdaki tarihleri ​​verimli bir şekilde yönetmek için yukarıdaki ipuçlarını kullanın.