PHP Geliştirme için MySQL'de DATETIME ve TIMESTAMP Arasında Seçim Yapmak

PHP

MySQL'de Tarih ve Saat Veri Türlerini Anlamak

MySQL ile çalışırken tarih ve saat değerlerini depolamak için uygun veri tipini seçmek veritabanınızın performansını ve işlevselliğini önemli ölçüde etkileyebilir. Bu makale DATETIME ve TIMESTAMP veri türleri arasındaki farkları araştırıyor ve bunların PHP sunucu tarafı ortamında kullanımına ilişkin öneriler sunuyor.

Bu ayrımları anlamak, veritabanı şeması tasarımınız için bilinçli kararlar vermenize yardımcı olacaktır. Her iki veri türünün özelliklerini inceleyeceğiz, avantajlarını ve sınırlamalarını tartışacağız ve özel ihtiyaçlarınıza ve kullanım durumlarınıza göre doğru olanı seçmeniz için pratik öneriler sunacağız.

Emretmek Tanım
CREATE TABLE Belirtilen sütunlar ve kısıtlamalarla veritabanında yeni bir tablo oluşturur.
DATETIME Tarih ve saat değerlerini saat dilimi olmadan saklar. Geçmiş veriler için uygundur.
TIMESTAMP Tarih ve saat değerlerini depolar, depolama için UTC'ye ve geri alma için yerel saate dönüştürür.
AUTO_INCREMENT Tabloya yeni bir kayıt eklendiğinde otomatik olarak benzersiz bir sayı oluşturur.
DEFAULT CURRENT_TIMESTAMP TIMESTAMP alanının varsayılan değerini, yeni bir kayıt oluşturulduğunda geçerli tarih ve saate ayarlar.
$conn->query($sql) Veritabanına karşı bir sorgu yürütür. Hem veri eklemek hem de almak için kullanılır.
$conn->fetch_assoc() Sonuç satırını, sütun adlarının anahtar olduğu ilişkisel bir dizi olarak getirir.

MySQL Tarih ve Saat Alanlarını Uygulama

Sağlanan komut dosyaları, etkili bir şekilde nasıl kullanılacağını gösterir. Ve Sunucu tarafında PHP ile çalışırken MySQL'deki veri türleri. İlk komut dosyası, adında bir MySQL tablosu oluşturur. iki tarih ve saat alanını içeren: event_date Ve . tip için kullanılır Bir olayın belirli tarih ve saatini, saat dilimi dikkate alınmaksızın saklayarak geçmiş verilere uygun hale getirmek. TIMESTAMP tip için kullanılır Her bir kaydın ne zaman oluşturulduğunu otomatik olarak izlemek, saklama sırasında zamanı UTC'ye dönüştürmek ve geri alma sırasında yerel saate geri çevirmek için. Bu ayrım, zaman dilimlerini hesaba katması gereken uygulamalar için çok önemlidir. İkinci komut dosyası, verinin nasıl ekleneceğini gösterir. PHP kullanarak tablo. MySQL veritabanına bağlanır, bir ifadesini kullanır ve yeni bir olay kaydı eklemek için onu çalıştırır. Veritabanına bağlantı kullanılarak kurulur. new mysqli() işlevi kullanılır ve sorgu şu komutla yürütülür: yöntem. Komut dosyası ayrıca, bağlantı başarısız olursa veya sorgu bir sorunla karşılaşırsa geri bildirim sağlamak için hata işlemeyi de içerir. Bu PHP betiği, tarih ve saat verilerinin doğru şekilde biçimlendirilmesini ve veritabanına eklenmesini sağlar.

Üçüncü komut dosyası veriyi alır ve görüntüler. masa. Tekrar veritabanına bağlanır, bir sorgusu tüm kayıtları getirir ve sonuçları işler. işlevi, her satırı ilişkisel bir dizi olarak getirmek için kullanılır; böylece sütun değerlerine adlarına göre kolay erişim sağlanır. Betik daha sonra sonuç kümesinde döngü yaparak çıktıyı verir. id, , , Ve Her kayıt için alanlar. Bu, her ikisinde de saklanan verilerin nasıl işleneceğini ve görüntüleneceğini gösterir. DATETIME Ve uygulamanın zamanla ilgili bilgileri doğru şekilde yorumlayıp sunmasını sağlar.

MySQL'de DATETIME ve TIMESTAMP kullanımı

PHP ve MySQL: Veritabanı Şeması Tasarımı

// Backend: Creating a MySQL Table with DATETIME and TIMESTAMP fields
CREATE TABLE events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_name VARCHAR(100) NOT ,
    event_date DATETIME NOT ,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
// Explanation:
// 'event_date' uses DATETIME to store the date and time of the event.
// 'created_at' uses TIMESTAMP to automatically track the record creation time.

MySQL Tablosuna Veri Ekleme

PHP ve MySQL: Veri Ekleme Komut Dosyası

//php
// Backend: PHP Script to Insert Data into the MySQL Table
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$event_name = "Sample Event";
$event_date = "2024-07-10 12:00:00";
$sql = "INSERT INTO events (event_name, event_date)
VALUES ('$event_name', '$event_date')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
//

Veri Alma ve Görüntüleme

PHP ve MySQL: Veri Alma ve Görüntüleme

//php
// Backend: PHP Script to Retrieve and Display Data from MySQL Table
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, event_name, event_date, created_at FROM events";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["event_name"].
             " - Event Date: " . $row["event_date"].
             " - Created At: " . $row["created_at"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
//

MySQL'de DATETIME ve TIMESTAMP Arasında Seçim Yapmak

Arasında karar verirken Ve MySQL'deki veri türlerini seçerken, bunların benzersiz özelliklerini ve uygulamanızın gereksinimleriyle nasıl uyumlu olduklarını dikkate almanız önemlidir. tür, geçmiş kayıtlar veya kullanıcının konumuna bakılmaksızın değişmemesi gereken olay tarihleri ​​gibi farklı saat dilimlerinde tutarlı olması amaçlanan tarih ve saatleri depolamak için idealdir. Bunun nedeni ise DATETIME saat dilimlerini hesaba katmaz; girildiği şekliyle tam tarih ve saati saklar, bu da kullanımı kolaylaştırır, ancak genel tutarlılık gerekiyorsa potansiyel olarak sorunludur.

Öte yandan, tür, zaman değerlerini UTC'ye göre depolamak ve bunları alındıktan sonra otomatik olarak sunucunun saat dilimine dönüştürmek üzere tasarlanmıştır. Bu yapar Farklı saat dilimleri arasında tutarlılık sağladığından, kayıt oluşturma veya güncelleme zamanları gibi değişiklikleri izlemek için özellikle kullanışlıdır. İle çalışırken , kullanarak TIMESTAMP saat dilimi farklılıklarının yönetimini basitleştirerek kullanıcılara doğru yerel saatlerin sunulmasını kolaylaştırabilir. Fakat, karşılaştırıldığında daha sınırlı bir aralığa sahiptir. , yalnızca 1970'den 2038'e kadar olan tarihleri ​​destekler; bu, uzun vadeli uygulamalar için dikkate alınabilir.

  1. MySQL'de DATETIME ve TIMESTAMP arasındaki temel fark nedir?
  2. tarih ve saati olduğu gibi saklar, bunu UTC'de saklar ve sunucunun saat dilimine dönüştürür.
  3. Etkinlik tarihlerini kaydetmek için hangi veri türünü kullanmalıyım?
  4. Saat dilimleri arasında tutarlılığı koruduğu için etkinlik tarihleri ​​için tercih edilir.
  5. Kayıt oluşturma sürelerini izlemek için en iyi veri türü hangisidir?
  6. otomatik olarak geçerli saati kullandığından ve saat dilimlerine göre ayarlandığından oluşturma zamanlarını takip etmek için idealdir.
  7. MySQL, TIMESTAMP ile saat dilimlerini nasıl yönetir?
  8. MySQL mağazaları UTC'deki değerleri alır ve bunları alındıktan sonra geçerli saat dilimine dönüştürür.
  9. TIMESTAMP kullanarak 1970'den önceki tarihleri ​​saklayabilir miyim?
  10. HAYIR, yalnızca 1970 ile 2038 arasındaki tarihleri ​​destekler. bu aralığın dışındaki tarihler için.
  11. TIMESTAMP kayıt değişikliklerinde otomatik olarak güncellenir mi?
  12. Evet, eğer tanımlanırsa Ve , TIMESTAMP otomatik olarak güncellenir.
  13. DATETIME alanına geçersiz bir tarih girersem ne olur?
  14. Tarih geçersizse, SQL moduna bağlı olarak MySQL '0000-00-00 00:00:00' ekleyecektir.
  15. Farklı sunucular arasında zaman depolamada tutarlılığı nasıl sağlayabilirim?
  16. Kullanma tüm zamanları UTC'ye dönüştürdüğü için zaman tutarlılığı sağlar.
  17. DATETIME ve TIMESTAMP içeren işlevleri kullanabilir miyim?
  18. Evet, MySQL şöyle çalışıyor Ve her iki veri türüyle de çalışın.
  19. Hangi veri türü depolama açısından daha verimlidir?
  20. DATETIME'ın 8 baytına kıyasla 4 bayt kullandığından depolama açısından daha verimlidir.

MySQL Tarih ve Saat Türleri Üzerine Son Düşünceler

Sonuç olarak her ikisi de Ve veri türlerinin MySQL veritabanı tasarımında yeri vardır. geçmiş kayıtlar için veya zaman dilimi tutarlılığının önemli olduğu durumlarda tercih edilir. TIMESTAMP Otomatik UTC dönüşümü ile değişiklikleri takip etmek açısından avantajlıdır. Tarih ve saatin doğru ve verimli şekilde işlenmesini sağlamak için seçiminiz uygulamanızın özel ihtiyaçlarına uygun olmalıdır.