Čudan oblik datuma - MySQL replace

Pozdrav,
u MySQL tabeli imam datum zapisan kao podatak gdje je prvi znak godina (A je 1991), drugi znak je mjesec i treći dan.

Pošto mi je s tim nezgodno raditi želio bih napisati SQL query koji će te datume prebaciti u brojčane, međutim problem mi je što prvi znak moram zamjeniti s godinom a druga dva s mjesecom/danom.

Kako bi to bilo najjednostavnije riješiti? Generirati sve moguće datume pa po tom raditi replace()?

Tablica za replace je:

http://img517.imageshack.us/img517/5047/screenshot1hk.png

Ma kakav mrkli replace…

Parsiraj string i za svaki element stavi ekvivalent vrijednost.

BTW, to se može riješiti bez linije koda, čista baza.
Kreiraš 2 pomoćne tablice, upravo kako si prikazao gore.
Podatak u glavnoj tablici ili “razbiješ” u tri podatka ili samo joinaš substring.
Kada sve polinkaš, samo napraviš update tog novog datumskog polja.

Oprosti ali nisam te skužio. Možeš mi malo pojasniti?

Recimo da se tvoje sadašnje polje zove STR_DATUM CHAR(3).
Novo polje u koje želimo zapisati datum je DATUM DATETIME (ja trošim MS SQL :zub: )

Kreiramo dvije nove tablice:
POM_GODINA
STR_GODINA CHAR(1)
GODINA INT

Tu imaš podatke tipa
A 1991
B 1992

POM_BROJ (za dane i mjesece)
STR_BROJ CHAR(1)
BROJ INT

Podaci tipa
A 1
B 2

Napraviš update

UPDATE TVOJA_TABLICA
SET DATUM = CAST(m.BROJ AS VARCHAR(2)) + ‘/’ + CAST(d.BROJ AS VARCHAR(2)) + ‘/’ + CAST(g.GODINA AS VARCHAR(4))
FROM TVOJA_TABLICA tt, POM_GODINA g, POM_BROJ m, POM_BROJ d
WHERE SUBSTRING(tt.STR_DATUM,1,1) = g.STR_GODINA
AND SUBSTRING(tt.STR_DATUM,2,1) = m.STR_BROJ
AND SUBSTRING(tt.STR_DATUM,3,1) = d.STR_BROJ

Mali disklejmer:
Ovo je za MS SQL i sigurno se sintaksa razlikuje za MySQL.
CAST je pretvorba, ovdje iz INT i VARCHAR(
SUBSTRING vraća substring (to je valjda isto)
Format datuma za update je MM/DD/YYYY što isto može biti različito.

Nadam se da nisam nešto previdio. Vjerojatno se može napraviti brže ali ja na žalost to ne znam :frowning:

pričate gluposti.
ne trebaju pomočne tablice ni ništa.
kad radiš sql query ima opcija da datum možeš pretvoriti u koji god hočeš format ili u varchar.
zato postoji konverzija.
ima je i u sql-u i u programskom jeziku.
u .net-u, driver ti automatski preokrene i prikaže dd.mm.yyyy u gridu.
ono što treba je čika google ili dokumentacija.
pretvorbu podržava svaka baza.

sory nisam vidio link.
extract godina, mjesec, dan.i pridružiš slova.

@Lola
Možeš li napisati kako bi izgledala konverzija koja string podatak ‘TEC’ konvertira u datumski podatak (03.05.2010)?

evo jednostavnog rješenja.imaš jednu tablicu sa znakovima i jedan query.

preko funkcije, ako imaš u nekoj tablici datume onda jednostavno iskoristiš donju funkciju
pa ti select izgleda:

select da(polje_datum) from tablica

i on će ti za sve datume vratiti znakovni niz.

za zamjenu koristiš novu tablicu.
insert into nova_tablica
select *,da(moj_datum) from tablica1

Prijedlog koji je postavio trnac je po meni najbolji. Nisam uspio prilagoditi query za MySQL server, trebalo bi ga napisati na drugačiji način jer ga očito muči ovaj FROM, a ni meni nema logike.

U privitku sam stavio sample iz baze sa datumima i dvije tabele po kojima bi se trebao vršiti update query.

[quote=“Futurist”]Prijedlog koji je postavio trnac je po meni najbolji. Nisam uspio prilagoditi query za MySQL server, trebalo bi ga napisati na drugačiji način jer ga očito muči ovaj FROM, a ni meni nema logike.

U privitku sam stavio sample iz baze sa datumima i dvije tabele po kojima bi se trebao vršiti update query.[/quote]

ti si pitao za mysql.
kod mojeg prijedloga sve kodove držiš u jednoj tablici, jer je tako prikazano na slici.
nadalje ja sam ti riješio preko funkcije na elegantan način, onako kako se radi.
nauči kako treba i nečeš imati problema.extract zato postoji da ti olakša.
imam x baza s različitim imenima, pa onda primjer napravim gdje mi odgovara, zato je baza recimo cursor i sl., ali to nema veze.

update from

http://technet.microsoft.com/en-us/library/ms177523.aspx

vidi, ako budeš krivo naučio, radit češ krivo.

zašto koristiš myisam, a ne innodb?

myisam ti zaključava cijelu tabelu kod, a innodb slog.

gdje ti je tabela sa datumom kojeg želiš koristiti i zamijeniti sa slovima?

Tabela je “rac”, u privitku. Kolumna s datumima je “DATUM”. myisam je po defaultu

1.nauči teoriju baza
2.nauči sql
3.probaj napraviti sam
4.ako zapne postavi pitanje pa ćemo ti pomoći


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja