Doğru Cevap
-
1:
mediumint daha küçük yer kaplar, row size'ın daha küçük olur ama daha sınırlıdır. Eğer o alanın eksiye düşmeyeceğinden eminsen "unsigned" seçersin sınırın 2 kat artar. tinyint bile birçok yerde iş görebiliyor ama ciddi performans ihtiyacın olmadığı sürece çok önemli değil.
Zaten sonradan değiştirebiliyorsun. Veritabanı bir süre kullanılıp data biriktikten sonra phpMyAdmin'den propose table structure dersin o sana önerir zaten ona göre değiştirirsin.
2:
datetime ya da timestamp kullanabilirsin. integer da kullanabilirsin ama gerek yok bence elinde timestamp diye bişey var zaten. varchar çok gereksiz sana hiçbir faydası yok, zararı çok. Mesela o kayıtlı tarihten 10 gün öncesini çekmek istesen datetime'la çok basit, ya da tarihin gösterim şeklini değiştirmek istesen...
varchar'la şu tarihten öncesini / sonrasını getir demek bile riskli.-
can-inlife
eline diline sağlık teşekkürler11 yıl önce yazılmış -
can-inlife
veri tabanına kaydettiğim iki kaydın tarihleri şunlar
dun kaydettiğim: 2012-04-29 23:56:38
bugun kaydettiğim: 2012-04-30 09:20:32
---------
ben bu kayıtları nasıl alabilirim. tarihleri karşılaştırarak.
*
$bugun=date("Y-m-d");
... where kelime_tar='$bugun'
**
$dun = date("Y-m-d", time()-86400);
... where kelime_tar='$dun'
her ikisi de başarısız. nasıl bu kayıtları seçebilirim ?11 yıl önce yazılmış -
madpoet
Performans çok önemli değilse
select * from blahbah where date(kelime_tar)='$bugun'
Zira alanları fonksiyon içine alınca index kullanmaz mysql.
Performans kritikse
$tarih1 = date('Y-m-d 00:00:00'); $tarih2 = date('Y-m-d 23:59:59');
select * from blahbah where kelime_tar between '$tarih1' and '$tarih2'
11 yıl önce yazılmış -
can-inlife
üstadsın bişey demiyorum.
o zaman dün girilen kayıtları da şöyle halledelim:
$yil="2012";
$ay=date("m");
$gun=date("d")-1;
$tarih1="2012-$ay-$gun "."00:00:00"; echo $tarih1;
$tarih2="2012-$ay-$gun "."23:59:59"; echo $tarih2;
select * from blahbah where kelime_tar between '$tarih1' and '$tarih2'
Allah bilgini arttırsın üstad.11 yıl önce yazılmış
-
Cevaplar
-
mediumint ile int arasında pek bir fark yok bildiğim kadarı ile sonuçta iki sinede bir değer giriyorsun mesela senin vermiş olduğun örnek gibi u_id int(11) gibi ..
tarih için ise ilerleyen zamanda veri tabanında geri dönük sorgular yapacaksan int(10) kullanmanı öneririm.-
can-inlife
üstad.
YYYY-MM-DD HH-MM-SS kayıtlarım için int(10) yeter mi?
YYYY-MM-DD kayıtlarım için yeter sanırım da?11 yıl önce yazılmış -
can-inlife
int(3)
dediğimizde maksimum 999 kayıt mı giebiliyoruz?
bu demek mi bu?11 yıl önce yazılmış -
bensedat18
hayır int(3) demek maksimum 3 basamaklı sayı girilebilir demek.11 yıl önce yazılmış
-
-
Selamlar 3 en cok 3 basamak demektir dedigini gibi 999. Tarih konusunda bu gune kadar ogrendigim tek birsey var o da tarih senin kullanimina degerlendirmene veya islemenle alakali olmalidir. Ben kaydedilen tarihleri oyle hallere sokuyorum ki... Bu amaci a gore degisir. Herneyse cveritabani degerleri cok onemli olabilir. Fakat herhangi birseyin id si icin 10 degerini vermek sorun olmaz. Hatta hardware problemi cikarmaz. Memory cpu gibi. Bu da demektir ki 999999999 basamak ;)
-
o zaman arkadaşlar:
veritabanını yer bakımından verimli kullanmak için:
maksimum hani 10 bin (10.000) kayıt girilecek bir alanı
u_id smallint u_id smallint(5) u_id int(5)
hangisiyle tanımlamak doğrudur.
smallint->2BYTES,,, int->4BYTES bildiğiniz gibi.-
bensedat18
çok farkeder mi bilmiyorum ama smallint girmen mümkündür.
smallint için 32.767 en büyük değerdir. en küçük değer -32.767'dır.11 yıl önce yazılmış -
can-inlife
ya anlayamadığım şey şu
personel_numver int(2) yazıyorum. sonra içine 999 999 999 yazıyorum.
kırpmıyor.
bakıyorum personel_number da 999 999 999 değeri var.
bu ne demek. anlamadım. parantez içindeki rakamın etkisi yok mu ?11 yıl önce yazılmış
-