Newsgroup: it.comp.lang.delphi
Titolo: Quesito sulle Date..

Ciao
Qualcuno di voi è a conoscenza di un algoritmo per ottenere il giorno
da una data ?? Es. Da, data in formato Intero (36456), capire se è lun o mar
o mer etc..
Grazie in anticipo.
P.S. Conosco DayOfWeek del delphi ma devo trovarmi il giorno in SQL....

 wrote in message 8qa16n$1ie2$1...@stargate1.inet.it...


> La decodifica da numero a giorno devi farla tu ma è semplice no?
Forse non mi sono spiegato, a te risulta che si possano chiamare funzioni
delphi da
una Stored Procedure in Interbase??
A me no, ecco perchè chiedo un algoritmo.
Ciao!


Perchè, in Interbase le memorizzi forse come intero?
Rocco Barbaresco:
Herrare Humanum Est,
Perseverare Ovest ....
(By Fichi D'India)

> Perchč, in Interbase le memorizzi forse come intero?
No, come Date ma se io assegno un DATE ad un INTEGER in interbase mi
restituisce l'intero.
Es.
DECLARE VARIABLE  DATA1 DATE;
DECLARE VARIABLE  DATA2 DATE;
DECLARE VARIABLE  ACASO INTEGER;
BEGIN
     ACASO = DATA2-DATA1;
     ^^^^-- ACASO mi da la diff in giorni fra data1 e data2.
END
Ti sembra strano?
In delphi se un campo TDate lo leggi come AsVariant e lo assegni ad un
intero ottieni un intero!
Il formato DATE č un WORD!!!
Ciao

Non ho capito esattamente cosa vuoi fare e qual'č il tuo problema,
comunque:
Se devi convertire un intero in una data usa CAST (che converte anche
da data ad intero)
Se ad un Date sommi o sottrai un Intero puoi ancora ottenere un Date
Se, dato un Date, vuoi sapere che giorno č (lun, mar, ecc..) allora,
credo, hai due possibilitą:
1) farti una funzione che, a partire da una data fissa che conosci,
calcola il giorno della settimana
2) usare una funzione di qualche udf che fa la cosa del punto 1
Ciao



BYE!

Per l'esattezza sarebbe un DOUBLE...ma ad ogni modo...
Esatto e credo che sia assolutamente sbagliato volerlo trattare in
questo modo.
TDateTime e' definito come "type of double", ovvero come tipo nuovo
esattamente equivalente al double.
Pero', effettivamente, sono due tipi diversi.
Questo significa che i costruttori del compilatore sono liberi di
cambiare la precisione matematica nella rappresentazione dei due tipi,
in modo tale da rendere il TDateTime piu' o meno preciso del double.
Trattare un TDateTime (leggasi TDate e/o TTime) come double (e quindi
come "Numerico" nei db) puo' voler dire ridurre la precisione
matematica atto a rappresentarlo, ottenendo date errate.
--
Andrea Laforgia (UIN 87230455)
----------------------------------------------------------
Non scrivetemi per e-mail, se non richiesto espressamente.
No replies in private e-mail, unless explicitly requested.
----------------------------------------------------------

Per farla sporca potresti reimpostare la data del sistema al
giorno che desideri "intercettare", attraverso le funzioni del
BIOS (credo che funzionino). Con le stesse esegui una
rilettura della data (in uno dei registri della CPU sarą
contenuto il giorno della settimana associato alla data
inserita) e la riaggiorni alla precedente o al nuovo giorno se
nel frattempo si č attivato il flag "midnight" dell'RTC.
Ciao!!!

attraverso le funzioni del BIOS (credo che funzionino). 
Spero tu stia scherzando.
E comunque, su molti sistemi ti e' impedito utilizzare tecniche di
basso livello.
--
Andrea Laforgia (ICQ 87230455)

No, purtroppo non scherzavo. In DOS ho sempre fatto così
e il DOS me l'ha sempre permesso (grande DOS).
... e non dimenticate che il DOS è anche IBM ...
 /\  /\
/  \/  \    Microsoft
 _-= deep inside =-_
-                              -

e il DOS me l'ha sempre permesso (grande DOS).
Si', lo stesso /grande/ DOS che non rientrava quando c'era un errore
di sistema.
