PHP ve MySQL kullanarak geçerli saati depolamak için önerilen yol nedir?

5 Cevap php

Benim ilk yaklaşım oldu:

$current = time(); // save this to column CURRENT_TIME with column type VARCHAR

//retrieve it like this
$retrieved = mysql_query(....) //assume query for getting the stored time value
$time = strtotime($retrieved);

Ben aşağıdaki yaklaşımlardan rastlamak var:

  1. gmstrftime gmt işlemek için kullanın
  2. sütun için INT yerine VARCHAR kullanımı
  3. mysql fonksiyonunu CURTIME veya CURDATE kullanın
  4. UNIX_TIMESTAMP mysql fonksiyonunu kullanmak

DATETIME veya TIMESTAMP mysql var tipi, bunların hiçbiri.

Bu biri için daha iyi bir yaklaşım var mı?

5 Cevap

Bu mysql kullanılması tavsiye edilir timestamp (YYYY-AA-GG SS: DD: SS) zaman ve tarih değişkenleri depolamak için alan türü mysql.

$sDate = date("Y-m-d H:i:s");
mysql_query("insert into `table_name` set `created_on` = '$sDate'");

bu sizin mysql sorguda birden doğrudan yüzden kullanımı mysql functions tarihleri ​​karşılaştırmak, zaman farkları hesaplamak ve yeteneği verir.

ve bu alan tip (o zaman damgası değeri var retriev için her zaman (strtotime kullanabilirsiniz)) php kodda hiçbir sorun yapar

Ben sadece MySQL TIMESTAMP değer türünü kullanın ve MySQL kendi kullanmasına izin CURRENT_TIMESTAMP.

Peki, kullanarak bir PHP Zaman () değeri bir MySQL zaman damgası alanı açabilirsiniz strtotime()

O zaman sadece doğru bir MySQL zaman damgası değeri bir PHP Zaman () değeri döner bir işlev yapmak zorunda.

MySQL tarafından kullanılan biçimi PHP tarafından kullanılan biçimi eşleşmesi gerekmez. Her iki tarafta en seçin. Veritabanları bir nedenle tarih veri türleri vardır; MySQL bu seçim yapabilirsiniz:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html

PHP, temelde üç seçeneğiniz var:

  • İyi eski damgaları işlemek kolay ve bunları kullanabilirsiniz sizin MySQL sorguları görmek FROM_UNIXTIME() ve UNIX_TIMESTAMP() - ama onlar önceden için onlara güvenemez ciddi aralığı sorunları var ( -1970 tarihleri, bu yüzden) doğum günü için uygun değildir.

  • DateTime nesneler, güçlü ve yerleşik hiçbir aralığı sorunları ve destek süresi bölgeleri var. Ancak bazen bazı önemli yöntem eksikliği gibi görünüyor yana kullanmak çok rahat değildir.

  • Sen özel bir tarih nesnesi (üçüncü parti veya kendi DateTime tabanlı) kullanabilirsiniz.

Storing it as int is more logical. You save the row format of date, using which you can later extract other format and more data .. I also save it as int.

Edit: For (Uni-dilimi) uygulaması int hızlı yoludur ve PHP büyük bir zaman dönüşüm araçlara sahiptir.