MySQL Integer Tarih Bilgisi
Merhaba Arkadaşlar,
Geçenlerde önceki haliyle php-mysql tabanlı olarak hazırlanmış bir sitenin yeni halini asp.net tabanlı olarak hazırlamam gerekti. Tabi eski sitenin verilerini de aktarmam gerekiyordu. Burada bir şey dikkatimi çekti. Tablolarda tarih bilgileri integer olarak tutulmuş ve tablolarda 1353081866 gibi değerler vardı. İlk önce bu beni daha önce görmediğim için oldukça şaşırtsa da biraz araştırınca bunun Unix Timestamp olduğunu ve çokça kullanıldığını gördüm. Bu özellik tarih bilgisinin veritabanın da 1 Ocak 1970 tarihinden, kayıt edilen tarihe kadar geçen süreyi saniye cinsinden tutuyordu ve microtime olarak adlandırılıyordu.
Eğer sorgu esnasında microtime olarak tutulmuş değeri normal tarih formatına çevirmek isterseniz aşağıdaki gibi yapabilirsiniz.
SELECT FROM_UNIXTIME(update_date) FROM PRODUCT
Kod tarafında da format değiştirmek isteyebilirsiniz. Bu durumda aşağıdaki gibi yapabilirsiniz. Burada benimde nedenini bilmediğim bir durum var. Aşağıdaki gibi dönüşüm yapıldığında veritabanından sorgu ile çekilen değer arasında 2 saat’lik bir fark çıkıyor. Bende bunu aşmak için + 2 saat yaptım.
DateTime date = new DateTime(1970, 1, 1).AddSeconds(Convert.ToInt32("1353081866")).AddHours(2);
Eğer tarih bilgisini microtime’a çevirmek isterseniz aşağıdaki gibi yapabilirsiniz.
UNIX_TIMESTAMP('2016-07-15 09:00:00');
Son yorumlar