1

Konu: mysql de tarih alanı formatı

Arkadaşlar web de; bir mysql veritabanındaki, bir table a, INSERT yaparken tarih alanında sorun yaşıyorum. Alanın tipi DATE fakat 2008-10-19 formunda bir değer istiyor. bizdeki örneğin dosya.tarih  date değerini mysql date alanına atarken nasıl kullanmalıyım.
Teşekkürler.

2

Re: mysql de tarih alanı formatı

Parametre kullan. Parametre kullanirsan:
1) Veri depolayan yerin bekledigi formatlarla ugrasmamzsin, otomatik cevrilir (ki senin problemin bu)
2) SQL injection hucumlarindan korunursun (ki bu daha onemli)

Ornek:

Visual Fox Pro
lcSQL = "insert into myTable (dosyaID, tarih) values (?dosya.id, ?dosya.tarih)")

SQLPrepare(m.handle, m.lcSQL)
select dosya
scan
  SQLExec(m.handle)
endscan

Tabii cursoradapter kullanmak daha rahat.

3

Re: mysql de tarih alanı formatı

Teşekkürler Hocam, Böyle kayıt yapabildim.
Sadece MSsql deki guid alanı değerini,  mysql de vharchar(20) alana kaydedemedim.
"Data too long for column 'guid' at row 1" hata mesajını veriyor.

4

Re: mysql de tarih alanı formatı

Cunku GUID degeri varchar(20)'ye uymaz. Ya char(32), 36,38 kullanacaksin ya da binary(16).
ildigim kadariyla mySQL'de GUID tipini native formatinda saklayabilecek bir datatipi yok, gunun birinde de yapacak gibi gozukmuyorlar.

char(38), 36 ve 32:
{BEB97F26-1B10-4367-94D5-8765D358B178}
BEB97F26-1B10-4367-94D5-8765D358B178
BEB97F261B10436794D58765D358B178

GUID 128bits integer yani 16 bytes binary. O haliyle sakla diycem ama mySQL'de uygun data tipi yok ( binary(16) native degil ). VFPdeki gibi c(36) en iyisi gibi. Hic olmazsa SQL serverla alip verirken kolay olur.

Neden SQL server kullanmiyorsun ki? Aklima gelmisken (reklamlarini gordum de ondan geldi) Advantage'da da uniqueidentifier tipi yok bildigim kadariyla, bir soralim bakalim reklam disinda bilgi alabilecekmiyiz:)

5

Re: mysql de tarih alanı formatı

Hocam, Hastanenin web sayfasını yapan firma dataları mySQL de tutuyor.
Cevabınız için teşekkürler.

6

Re: mysql de tarih alanı formatı

cetinbasoz yazdı:

Cunku GUID degeri varchar(20)'ye uymaz. Ya char(32), 36,38 kullanacaksin ya da binary(16).
ildigim kadariyla mySQL'de GUID tipini native formatinda saklayabilecek bir datatipi yok, gunun birinde de yapacak gibi gozukmuyorlar.

char(38), 36 ve 32:
{BEB97F26-1B10-4367-94D5-8765D358B178}
BEB97F26-1B10-4367-94D5-8765D358B178
BEB97F261B10436794D58765D358B178

GUID 128bits integer yani 16 bytes binary. O haliyle sakla diycem ama mySQL'de uygun data tipi yok ( binary(16) native degil ). VFPdeki gibi c(36) en iyisi gibi. Hic olmazsa SQL serverla alip verirken kolay olur.

Neden SQL server kullanmiyorsun ki? Aklima gelmisken (reklamlarini gordum de ondan geldi) Advantage'da da uniqueidentifier tipi yok bildigim kadariyla, bir soralim bakalim reklam disinda bilgi alabilecekmiyiz:)


ben vfp'de 16 karakterlik alan kullanıyorum öyle saklıyorum. c(36)'dan daha iyi değil mi öylesi?

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: mysql de tarih alanı formatı

Degil cunku SQL server-VFP arasi cevrim derdini akla getiriyor. Eger c(36) veya 38 olursa SQL server hic sorun ckarmadan anliyor (sana SQLExec sonucu c(36) geliyor).
16 olan seklinde senin araya girmen gerekebilir (benim ozelikle password gibi sifreledigim datada sorun oluyor - c(16) seklini daha once denemistim tam hatirlamiyorum ama problemliydi).

8

Re: mysql de tarih alanı formatı

cetinbasoz yazdı:

Degil cunku SQL server-VFP arasi cevrim derdini akla getiriyor. Eger c(36) veya 38 olursa SQL server hic sorun ckarmadan anliyor (sana SQLExec sonucu c(36) geliyor).
16 olan seklinde senin araya girmen gerekebilir (benim ozelikle password gibi sifreledigim datada sorun oluyor - c(16) seklini daha once denemistim tam hatirlamiyorum ama problemliydi).


ben bunu sadece .dbf ile çalışırken durum için kastetmiştim. sql-server çalışırken 36-38 olmasının zaten yer açısından bir zararı yok cursor olduğu için tabii ki.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com