MySQL locale en_US u hr_HR

Dečki bok,

radim jedan desktop app, koji radi konekciju na VPS MySQL bazu. Sve to radi OK, ali na jednom mjestu imam tablicu sa poljem DECIMAL. Problem nastane jer je moj lokalni PC s postavkama HRV, a MySQL je na engleskom en_US .

Dali je OK ići u smjeru da stavim hr_HR za tu bazu? Dali je moguće uštimati samo za jednu bazu (koju koristim), da ne diram baze koje se vrte na serveru za web stranice? Može li pomoć?

konkretno, decimalni unos u aplikaciji izgleda ovako 1.000,00 a u bazu trebam imati unos 1000.00 . Kako to uštimati?

Sto se tice jezika postavi na utf-8 general-ci i to bi trebalo biti ok.

A to se tice unosa u bazu napravi neki data formating layer prije unosa u bazu.

Neku metodu koja formatira brojeve u format kako trebas poslati.

Ne sjećam se da sam koristio, al’ postoji format mysq funkcija koja može nešto slično.

To sam uradio. Nije mi jasno, unos za datum mi radi ok, iako baza ima format yyyy-mm-dd, ja iz aplikacije upisujem dd.MM.YYYY.

Koja je najbolja zamjena decimal formata ako trebam valuta vrijednost? Pričam o unosu recimo 10.000,00 € , koji ću svakim sljedećim unosom u bazu umanjiti za neku kvotu koja se potroši. FLOAT ili nešto treće? Čisto da vidim ponašanje kod drugog formata polja u bazi

Naoko nevezano, al’ako ćeš raditi matematičke operacije, najsigurnija varijanta ti je sa integer-ima.

1 Like

Vidio sam da ima. Nisam detaljno potražio, ali mi se čini da je pogodan za ispisivanje iz baze. Ne znam koliko mi je zgodno ga koristiti u samom kodu, da radi svaki put kada se izvodi query prema bazi.
Ma, pozabavi se ja s ovim , pa javim kako je prošlo.

Samo da se vratim još jednom, koji format za polje najbolje može zamijeniti DECIMAL ?

Taman opet pitam, a već si odgovorio. I meni nešto zvoni da je integer još od davnina služio za matematičke operacije. Ovaj decimal, nisam ni znao za njega do prije 2 dana :slight_smile:

Je l’ može gist da se vidi (pošto nisam siguran o čemu tačno pričamo)?

Decimal, double, float će ti stvarati grešku.
(Vjerovatno) svi koriste integer pa samo formatiraju output.

Šta spremaš u taj decimal, ako se radi o financijskim podacima onda nema ništa drugo, decimal je u MySQL za to.
https://code.rohitink.com/2013/06/12/mysql-integer-float-decimal-data-types-differences/

Zavisi za šta se koristi. Cijene porezi i ostale fin. stvari uvijek spemamo u decimal i to sa 14 decimala, jer radi zaokruživanja uvijek zna biti problema sa onom razlikom od 0.01 lipe, centa, pare ili čega već

1 Like

Sve može, zavisno od validacije inputa.
Svakako double check i TDD toga kako su izvršene operacije.

Recimo i Stripe koristi integer za vrijednost (sume).

Svakako je tako prikazano, ali čisto sumnjam da i oni u bazi i tablici imaju decimal sa 2 decimale. Za korisnika je uvijek prikaz na dvije decimale, ali interno najčešće nije, to sam još naučio dok sam radio kod @trnac, koliko se sjećam i njegove aplikacije spremaju cijene i ostale stvari sa par decimala više od dvije.

Stojim iza toga da se trebaju testirati svi edge cases kad se radi (ne samo) o parama.
Isto tako output klijentu ili serveru u S2S API slučaju ne mora a i najbolje jeste da nema veze sa onim što se dešava na serveru.

@komentar Koji je jezik u pitanju?

vb.net

Nisam programer, kako se može i zaključiti. Koristim većinom ugrađene funkcije Visual studio 2019. , i nešto koda (sql konekcija, insert, select …) . Imam jednu jednostavnu aplikaciju u kombinaciji sa MySQL koja dobro radi (20 klijent računara) . Sada hoću da izradim još jednu, ali ova će imati par instrukcija pored klasičnog upisivanja i čitanja.

Nisam koristio pogledaću kasnije.

Prije kodiranja prvo moraš skapirati na šta će struktura tabele ličiti.
Ako je to decimal, kupiš takav tj. formatiraš u decimal koji baza očekuje i šalješ.
Ovo si sve završio.

Mislim da bi’ ja u tvom slučaju napravio trigger u tabeli sa ovom gore format funkcijom.
Možeš li testirati da l’ bi radilo kako si zamislio (osim lokalizacije) sa default decimal separatorima?

@creatifcode citirao sam jedan dio,

For those who did not understand, let me explain with an Example. Create 2 Columns with Types Double and Decimal and Store value 1.95 in both of them. If you print each column as Integer then you will see than Double Column has printed 1 , while Decimal column printed 2 .

Nije mi jasno, par rečenica prije kaže da decimal ne radi precision nego exact match , a u primjeru kasnije se vidi da se 1.95 ispisuje kao 2. ??

Edit: sada vidim, integer je taj koji vraća “pogrešnu” vrijednost. Kužim.

Ovo i jest prvi važni korak koji treba uraditi. Skužio sam to kroz svaki započeti projekt :stuck_out_tongue:

Aplikacija se može korigirati u hodu, ali ako je baza loše zamišljena dolazi do velikih problema kasnije … thanks.

1 Like

Post can’t be empty Post must be at least 20 characters

Kada pokušam sa kodiranjem, vidim da se kod izvrši, ali opet dobijem rezultat kako je system locale postavljen.

Dim number As Decimal
If Decimal.TryParse(textbox4.Text, number) Then
    textbox4.Text = Format(number, "##,#0.00")
Else
   messagebox.show("Provjerite unos količine")
End If

I kroz opcije VS2019 ista stvar

wmdecimal

Morat ću pokušati DB locale promijeniti. Javim, sutra/prekosutra