Home

JiFile for Joomla!

JIFile
JiFile is a component for Joomla! that allows you to index file contents (PDF, DOC, etc..) to perform searches in them.

Learn more...  Demo

JoomPhoto Mobile

JPhotoMobile
JoomPhoto Mobile is a component for Joomla! that allows you to share the photos from your Android device to your site Joomla.

Learn more...  Demo

iFile Framework

IFile
IFile is an open source framework written entirely in PHP, allows the indexing of textual content of a document (DOC, PDF, EXCEL, etc.) and a quick search within them.

Learn more...  Demo

Easy Language

EasyLanguage
Easy Language is a plugin for easy and immediate management of multilingual texts in every possible area of joomla, articles, components, modules, metadata, template, other components(example K2) etc.

Learn more...

Article Book Effect

Article Book Effect
View Joomla articles with the effect turns the page of a book. This plugin will display the contents of an article in Joomla as a real book or magazine, using all the benefits of HTML5

Learn more...  Demo

 

Passport photo

Passport photo
The most popular Android app that allows you to print photos cards for your documents with your Android smartphone, in a simple and intuitive way.

Learn more...

 

Crazy Shadow

Crazy Shadow
Crazy Shadow is the 3D fast-paced and fun puzzle Android game! Try to rotate and drag shapes in the position of their shadows without fail! Solve in succession all combinations of levels of the game.

Learn more...

 

Admin Countdown

Admin Countdown
Module for Joomla! 2.5 and 3.x displays in the administration part of the site, a timer with countdown of the time remaining in your session.

Learn more...  Demo

 

A proposito di date, in Oracle


Tramite una serie di domande (e relative risposte) vi proponiamo in questo articolo un percorso attraverso
il "mondo delle date" in Oracle, sperando che possa servire come approfondimento, o come promemoria
di pronta consultazione.
Sono benvenuti i commenti, e proposte per aggiungere altri casi d'uso!


1)  qual é il formato della data utilizzato, e quale é la lingua della sessione di lavoro sul DB Oracle?

select * 
from nls_session_parameters
where parameter in ('NLS_DATE_FORMAT','NLS_DATE_LANGUAGE');
Un risultato per tale query può essere ad esempio il seguente:


PARAMETER		    VALUE
---------------		--------
NLS_DATE_FORMAT		DD-MON-RR
NLS_DATE_LANGUAGE	ITALIAN
Si noti che:
- il valore del parametro NLS_DATE_FORMAT indica il formato in cui viene espressa la data
- il valore del parametro NLS_DATE_LANGUAGE indica la lingua usata

1b) come si fa a cambiare il formato di visualizzazione della data, per esempio mettendo il nome del mese per esteso?

alter session set NLS_DATE_FORMAT='DD-MONTH-YY';
testo di accompagnamento testo di accompagnamento

1c) come si fa a cambiare la lingua di visualizzazione della data, per esempio mettendola in francese?

alter session set NLS_LANGUAGE=FRENCH;


2) come si utilizza to_date() ?

La funzione to_date() agisce su una stringa, per ottenere una data. Deve avere come primo argomento una stringa che rappresenta una data, e può avere come secondo argomento un formato al quale la data (del primo argomento) deve aderire. Nell'esempio di seguito si mostra la necessità di fare aderire la stringa della data (primo argomento) alla stringa del formato (secondo argomento).
select 
	to_date('05/16/13', 'MM/DD/YY') as dataesempio1,
	to_date('16-Mag-13', 'DD-Mon-YY HH:MI:SS') as dataesempio2,
	to_date('Maggio.16.2013', 'Month.DD.YYYY HH:MI:SS') as dataesempio3
from dual;  
Si noti che:
a) il formato in cui é visualizzato il risultato dipende dal parametro NLS_DATE_FORMAT che si é ricavato al punto 1).
b)i casi in cui il mese é "Mag" e "Maggio" funzionano perché il parametro NLS_DATE_LANGUAGE é uguale a ITALIAN.
Se invece non si specifica il secondo argomento, allora il suddetto esempio diventa come segue:
select 
	to_date('05/16/13') as dataesempio1,
	to_date('16-Mag-13') as dataesempio2,
	to_date('Maggio.16.2013') as dataesempio3
from dual;
In questo caso l'unico formato che funziona é quello del secondo esempio, perché tale formato corrisponde a quello attualmente in uso, come detto al punto 1)

3) come si utilizza to_char() ?

La funzione to_char() si può usare con diversi tipi di argomenti, ma in questi esempi consideriamo soltanto il caso in cui agisce su una data, per ottenere una stringa. Ha come primo argomento una data e come secondo argomento una stringa di formato: il risultato sarà mostrato secondo il formato indicato.
select 
	to_char(sysdate, 'DD-MONTH-YEAR') as formatoesempio,
	to_char(sysdate, 'DAY DD/MM/YYYY') as formatoesempio
from dual;  
4) che giorno é oggi?

select sysdate from dual;
Si noti che la visualizzazione del risultato dipende dal formato e dalla lingua, che si sono ricavati al punto 1.

4b) che giorno della settimana é oggi, e che ora é adesso ?

select to_char(sysdate, 'DAY HH24:MM:SS') from dual;
4c) quanti giorni sono passati dall'inizio dell'anno ad oggi?

select to_char(sysdate, 'DDD') as giorni_da_inizio_anno from dual;
5) che cosa indica il formato RR o RRRR?

Il formato RR o RRRR é simile al formato YYYY, ma con le seguenti particolarità.
Se viene fornita una data a due cifre compresa tra 50 e 99, allora il sistema la interpreterà come data del 20mo secolo, e metterà all'inizio la cifra 19.
select
	TO_CHAR(TO_DATE('17/04/93','DD/MM/RR'),'DD/MM/YYYY') as data_20_secolo
from dual;

Se viene fornita una data a due cifre compresa tra 0 e 49, allora il sistema la interpreterà come data del 21mo secolo, e metterà all'inizio la cifra 20.
select
	TO_CHAR(TO_DATE('17/04/13','DD/MM/RR'),'DD/MM/YYYY') as data_21_secolo
from dual;

Se viene fornita una data a quattro cifre, allora il sistema non interpreterà nulla, riportando la data introdotta così com'é.
select
	TO_CHAR(TO_DATE('17/04/2313','DD/MM/RR'),'DD/MM/YYYY') as data
from dual;
6) come si fa la differenza tra due date?

Ad esempio, quanti giorni sono passati dallo scorso 14 gennaio 2014 ad oggi ?
select sysdate - to_date('2014-01-14' ,'YYYY-MM-DD') as giorni_passati from dual;
Il risultato é un numero FLOAT che é il numero di giorni richiesto. Il risultato contiene una frazione perché nella data espressa da sysdate, viene considerata anche la componente relativa al tempo (ore, minuti, secondi).

6b)

Nell'esempio seguente i primi due risultati sono identici (e sono uguali a undici), perché dove non é specificata esplicitamente dentro il formato la componente del tempo (ore, minuti, secondi) questa viene posto a zero di default.
Il terzo risultato invece é di poco superiore a undici, poiché la data maggiore ha come componente del tempo i seguenti valori: zero ore, zero minuti, un secondo.
select 
to_date('2014-01-14' ,'YYYY-MM-DD') - to_date('2014-01-03' ,'YYYY-MM-DD') as risultato1,
to_date('2014-01-14 00:00:00' ,'YYYY-MM-DD HH24:MI:SS') - to_date('2014-01-03 00:00:00' ,'YYYY-MM-DD HH24:MI:SS') as risultato2, 
to_date('2014-01-14 00:00:01' ,'YYYY-MM-DD HH24:MI:SS') - to_date('2014-01-03 00:00:00' ,'YYYY-MM-DD HH24:MI:SS') as risultato3 
from dual;
6c) quanti secondi sono passati dallo scorso 14 gennaio 2014 ad oggi?

select (sysdate - to_date('2014-01-14' ,'YYYY-MM-DD')) * 86400 as secondi_passati  from dual; 
Si noti che la precedente, é difatto la medesima select del punto 6) con l'aggiunta del fattore 86400, che indica il numero di secondi in un giorno.

7) come si fa ad aggiungere 4 giorni ad una data?

select sysdate + 4   as tra_4_giorni from dual;
select to_date('2014-01-14' ,'YYYY-MM-DD')  + 4   from dual;  
7b) come si fa a togliere 3 giorni ad una data?

select sysdate - 3   as tre_giorni_fa from dual;  
8) come si fa ad aggiungere 6 mesi ad una data?

select ADD_MONTHS(sysdate, 6) tra_6_mesi from dual;  
8b) come si fa a togliere 6 mesi ad una data?

select ADD_MONTHS(sysdate, -6) sei_mesi_fa from dual; 
testo di accompagnamento testo di accompagnamento

9) come si fa ad aggiungere 9 settimane ad una data?

utilizzando quanto visto ai punti 7) e 7b), si ottiene:
select sysdate + 9 * 7   as tra_9_settimane from dual;
testo di accompagnamento testo di accompagnamento

10) come si fa ad aggiungere 10 anni ad una data?

utilizzando quanto visto ai punti 8) e 8b), si ottiene:
select ADD_MONTHS(sysdate, 10 * 12) tra_10_anni from dual;
11) come si fa il confronto tra due date?

Negli esempi seguenti, si noti che non é importante il formato della data.
Ciò che importa é che il confronto avvenga effettivamente tra delle date e non, per esempio, tra delle stringhe.
select 1 
from dual 
where to_date('2014-01-14' ,'YYYY-MM-DD')  > to_date('11-GEN-2014' ,'DD-MON-YYYY');
select count(*)
from employees
where hire_date <= to_date('16.Maggio.2003', 'DD.Month.YYYY');
12) come si fa ad effettuare la ricerca con la data in un intervallo?

SELECT *
FROM employees
WHERE hire_date BETWEEN 
		TO_DATE ('2003/01/01', 'yyyy/mm/dd') AND TO_DATE ('2003/12/31', 'yyyy/mm/dd');  
Si noti che nella suddetta select sono compresi gli estremi, e di fatto é equivalente alla seguente:

SELECT *
FROM employees
WHERE hire_date >= TO_DATE('2003/01/01', 'yyyy/mm/dd')
AND   hire_date <= TO_DATE('2003/12/31','yyyy/mm/dd');
13) come si fa ad estrarre da una data, soltanto il giorno/mese/anno ?

SELECT 
	EXTRACT(day FROM to_date('25.04.2012','DD.MM.YYYY')) "Giorno",
	EXTRACT(month FROM to_date('25.04.2012','DD.MM.YYYY')) "Mese",
	EXTRACT(year FROM to_date('25.04.2012','DD.MM.YYYY')) "Anno"
from dual;
  
14) come si ricava l'ultimo giorno del mese?

La funzione LAST_DAYS restituisce la data dell'ultimo giorno del mese che contiene la data. La seguente select determina quanti giorni rimangono nel mese corrente.
SELECT sysdate,
   LAST_DAY(sysdate) "Ultimo",
   LAST_DAY(sysdate) - sysdate "Giorni rimasti"
FROM DUAL;
15) per la data fornita, come si ricava il primo giorno della settimana/mese/anno ?

Si noti che il primo giorno della settimana é da intendersi come il primo lunedì prima della data indicata.
SELECT 
	TRUNC(TO_DATE('16-GEN-14'), 'DAY'),
	TRUNC(TO_DATE('16-GEN-14'), 'MONTH'), 
	TRUNC(TO_DATE('16-GEN-14'), 'YEAR') 
FROM dual;  
16) come si fa ad ottenere l'ultimo giorno dell'anno?

select ADD_MONTHS(trunc(sysdate,'YEAR'),12)-1  as ultimo_giorno 
from dual; 


Credits

 

You have no rights to post comments

Last comments

  • Easy Language: a Joomla Plugin for Multilingual Websites

    • dorcas melda dorcas melda 19.05.2020 13:38
      Purchase healthcare research paper services and healthcare coursework writing services since students ...
  • Passport photo

    • dorcas melda dorcas melda 19.05.2020 13:40
      Among other courses, cultural studies coursework writing services has become popular since students seek ...
  • Switching Light Video

    • dorcas melda dorcas melda 19.05.2020 13:39
      E-commerce research paper writers are hard to come across for those in need of E-commerce Essay Writing ...

Forum Post

  • No posts to display.

Forum Login