Quindi come funziona la query? Bene, ecco perché:
select to_char(to_date(:number,'j'),'jsp') from dual;
Se guardi nella parte più interna della query to_date(:number,'j') la 'j' o J è la data giuliana (1 gennaio 4713 aC), fondamentalmente questa data è stata utilizzata per studi astronomici.
Quindi to_date(:number,'j') prende il numero rappresentato da numero e fa finta che sia una data di Julian, converte in una data.
Se passi 3 al numero, quindi convertirà la data in 3 gennaio 4713 a.C., significa che 3 viene aggiunto alla data giuliana.
select to_char(to_date(3,'j'),'jsp') from dual;
Ora to_char(to_date(3,'j'),'jsp'), jsp =Ora; prendi quella data(to_date(3,'j')) e scrivi il numero di giuliano che rappresenta, l'output è:
TO_CH
-----
three
C'è una limitazione durante l'utilizzo delle date giuliane, va da 1 a 5373484. Ecco perché se metti i valori dopo 5373484, ti verrà generato un errore come mostrato di seguito:
ORA-01854: julian date must be between 1 and 5373484
Ciao a tutti, è interessante questo topic. Ricordo che quando stavo imparando Oracle nel 2005 uno degli istruttori mi chiese di scrivere un codice PL/SQL per convertire i numeri in parole, era un codice di due pagine intere per raggiungere questo obiettivo.
Ecco qualche riferimento che potrebbe aiutarci a capire il giorno giuliano, ecco perché durante questa operazione utilizziamo la lettera 'j' o 'J'.
Innanzitutto c'è un sito Web che contiene l'esempio e la spiegazione su "Come convertire un numero in parole utilizzando Oracle SQL Query":
http://viralpatel.net/blogs/convert- numero-in-parole-oracle-sql-query/
Secondo, se vuoi saperne di più su "Giorno Giuliano" vai a:
http://en.wikipedia.org/wiki/Julian_day
Terzo, se vuoi saperne di più su chi ha proposto il numero del giorno giuliano nel 1583, è stato di "Joseph Scaliger":
http://en.wikipedia.org/wiki/Joseph_Justus_Scaliger
Non ha senso per me continuare a ripetere ciò che ha fatto un altro autore in questi siti Web, ecco perché ho appena pubblicato il link a cui puoi accedervi e leggere ciò di cui hai bisogno per capire come funziona una query del genere:
SELECT TO_CHAR (TO_DATE (2447834, 'j'), 'jsp') FROM DUAL;
//Risultato:due milioni quattrocentoquarantasettemilaottocentotrentaquattro