Newsgroup: it.comp.appl.access
Titolo: Da numeri a date

Salve a tutti,
ho una tabella in cui un campo è una sequenza di numeri che devo trasformare 
in due colonne:
una = Anno (Es. 1999) ed una = Mese (es. 05)
I numeri sono circa 10.000 e sono del tipo:
811201 = le due colonne devrebbero "tradurre" : Col. Anno 1981 e Col. mese 
12 tralasciando il giorno 01
111 = le due colonne devrebbero "tradurre" : Col. Anno 2000 e Col. mese 01 
tralasciando il giorno 11
1002 = le due colonne devrebbero "tradurre" : Col. Anno 2000 e Col. mese 10 
tralasciando il giorno 02
11005= le due colonne devrebbero "tradurre" : Col. Anno 2001 e Col. mese 10 
tralasciando il giorno 05
e così via.
quindi la tabella dovrebbe diventare.
c1             c2             c3
Num        Anno        Mese
811201    1981        12
111           2000        01
1002        2000        10
11005        2001        10
etc.
Grazie
Marco

 wrote in message
news:441bc646$0$36927$
4faf...@reader3.news.tin.it

Vediamo se ho capito:
1) il giorno c'è in ogni stringa ed è SEMPRE di due caratteri;
2) la stringa va letta da destra verso sinistra, e nel caso manchi
l'anno esso è = 2000
Se è così dovresti fare un piccolissimo "parser" che legga dall'ultimo
carattere di destra e che:
1) se lunghezza della stringa <= 4 la si scompone in due parti MM e GG
2) Se lunghezza > 4 togli i 4 caratteri di destra e ti rimane l'anno.
Chiaramente ognuno dei punti precedenti va ulteriormente analizzato, nel
senso che
 
GG = rigth(stringa;2) sempre,
e poi devi ottenere MM ed AA a seconda di quale dei due casi ti trovi.
Tecnicamente farei così:
INPUT= "tua stringa" as es. "11005"
OUTPUT="000000"
OUTPUT=Parser("11005") --> "011005" 
e di qui faccio una spezzettamento in AA, MM, GG;
poi aggiungo "20" OPPURE "19" in funzione del valore di AA.
Ciao,
ROberto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 10 tralasciando il giorno 05
CUT
In line adi principio sembra che tu abbia una tabella in cui, con un errore 
grossolano, delle date sono state memorizzare come numerici invece che come 
testo.
La prima cosa da fare è di trasformare i numeri in testo aggiungendo gli 
zeri iniziali.
puoi farlo col comando format in una query di aggiornamento memorizzando i 
numeri così trasformati in un campo testo.
Poi ti sarà facile leggere i primi due caratteri per l'anno e i secondi due 
caratteri per il mese
Ciao
Sib
-- 
http://www.gestionedati.com
 

 ha scritto nel messaggio 
news:441bc646$0$36927$4faf...@reader3.news.tin.it...

Questo un esempio di istruzione sql se il campo è un testo:
SELECT Format([TuoCampoNumero],"000000") AS Base, 
Left(Format([TuoCampoNumero],"000000"),2) AS Anno, 
Mid(Format([TuoCampoNumero],"000000"),3,2) AS Mese, 
Right(Format([TuoCampoNumero],"000000"),2) AS Giorno
FROM Tabella1;
Questo un esempio se il campo è un numero:
SELECT Format(CStr([TuoNumero]),"000000") AS Base, 
Left(Format(CStr([TuoNumero]),"000000"),2) AS Anno, 
Mid(Format(CStr([TuoNumero]),"000000"),3,2) AS Mese, 
Right(Format(CStr([TuoNumero]),"000000"),2) AS Giorno
FROM Tabella1;
Ciao, Carlo

 ha scritto nel messaggio 
news:90bc45d227a640c13c5...@mygate.mailgate.org...


Grazie,
molto sintetico!! ma comunque utile.
Saluti
Marco
"Sib" <sedav...@SPAMtiscali.it> ha scritto nel messaggio 
news:441be586$0$36928$4faf...@reader3.news.tin.it...


 ha scritto nel messaggio 
news:441bf736$0$36937$4faf...@reader3.news.tin.it...


 seconda.
Rispondi dopo, come facciamo noi...
IIF(Val(Anno)>30,"19","20") & Anno AS Anno4Cifre
Dove Anno è il campo che contiene le ultime due cifre dell'anno ricavata 
come ti suggerivamo.
Sib
-- 
http://www.gestionedati.com