Pagina 3 di 5 primaprima 1 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 46
  1. #21
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    Per sfruttare a pieno le potenzialità delle funzioni di trattamento delle date, con sqlserver utilizzo campi data di tipo smalldatetime o datetime; a meno di particolari necessità il tipo smalldatetime è preferibile.

    per l'inserimento delle date, qualora debba inserire il valore corrente utilizzo la funzione nativa GETDATE() o GETUTCDATE() a seconda delle esigenze dell'applicazione.

    qualora invece occorra inserire una data/ora arbitraria, utilizzo una funzione UDF che mi sono creato che formatta adeguatamente la data fornita a seconda delle preferenze del database server. Infatti, le impostazioni di inserimento in campi data su Server Americani (edizione americana di sqlserver) e su altre localizzazioni (ad es. in lingua italiana) è differente. Questo è un aspetto molto delicato; ho trovato diverse applicazioni commercializzate in giro che danno errore, se installate su versioni localizzate di database, proprio sui campi data.

    su questo punto, purtroppo, non si presta adeguata attenzione
    ad esempio, anche risorse in rete fornite da sviluppatori MVP
    http://italy.mvps.org/MVPs/lbenaglia...ormatoDate.htm presentano confusione su questo aspetto.
    Tutti vogliono parlare, nessuno sa ascoltare.

  2. #22
    Personalmente anche io uso sempre il formato ISO.
    Mi sono creato una funzione che splitti e ricomponga la data nel formato scelto da usare in qualsiasi input o query.

    In genere non separo data dall'ora, a meno che non sia necessario per questioni di elaborazione.

  3. #23
    per quanto esposto sinora (compresi gli argomenti trattati nel link di MVPs...) non vedo particolari vantaggi nell'uso del campo in formato data anziche' testo YYYYMMDD.

    Per inserimento e visualizzazione, ho gia' postato un paio di SUB.

    Per l'estrazione di date gia' formattate (in certuni casi puo' essere comodo, evita ulteriori elaborazioni), si possono usare statement SQL come i seguenti

    per Access
    codice:
    SELECT MID(CampoData, 7, 2) + '/' + MID(CampoData, 5, 2) + '/' + MID(CampoData, 1, 4) AS CampoDataFormattato FROM Tabella
    per SQL
    codice:
    SELECT SUBSTRING(CampoData, 7, 2) + '/' + SUBSTRING(CampoData, 5, 2) + '/' + SUBSTRING(CampoData, 1, 4) AS CampoDataFormattato FROM Tabella

  4. #24
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    i vantaggi di usare i campi data emergono quando si vogliono fare operazioni di somme, sottrazioni, ecc. sulle date
    ad esempio calcolare il numero di ore tra due date, oppure il numero di giorni lavorativi, o di weekend tra due date, ecc...
    Chi usa un campo data se la cava con una semplice (e veloce) istruzione sql, tu invece...

    ad esempio, in uno dei miei ultimi lavori, per un servizio di consulenza online, serve calcolare 48 ore lavorative a partire dalla data di arrivo del quesito.
    Tutti vogliono parlare, nessuno sa ascoltare.

  5. #25
    Gioba, tutti e due sappiamo che sia l'uno che l'altro metodo hanno vantaggi e svantaggi... cerchiamo di trovare volta volta la soluzione migliore - relativamente al contesto.

    Facciamo finta che ci troviamo a lavorare con due db che non abbiamo progettato noi - e NON possiamo cambiare il formato! - , e che dobbiamo cmq tirare fuori i risultati. Il mio ha le date memorizzate in un campo testo YYYYMMDD, il tuo invece ha le date in un campo data.

    Vediamo - situazione per situazione - cosa dobbiamo fare per ottenere lo stesso risultato. Ok?

  6. #26
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    ok. ma come facciamo a paragonare i metodi se tu usi access ed io sqlserver? io uso le UDF e le SP che in access non ci sono ...

    per fare il confronto vero, ti chiedo: il tuo metodo lo usi anche con sqlserver?
    Tutti vogliono parlare, nessuno sa ascoltare.

  7. #27
    mmmm quindi e' un problema di approccio. e non solo tra access e mssql, ma anche con altri db. SP e UDF non sono (completamente) uguali tra i vari db. in piu', mi sembra che per MySql le SP siano state introdotte da poco, e quindi non saranno molto diffuse e/o comprensibili.

  8. #28
    la gestione delle date non è sempre così banale come sembra.

    su db access uso prevalentemente il campo in formato 'data/ora' e prima di inserire la data nel db la formatto in formato iso tramite la seguente funzione:

    codice:
    Function FormatDateForDB(data)
    	FormatDateForDB = Year(data)&"/"&Month(data)&"/"&Day(data) & " " & hour(data) & ":" & minute(data) & ":" & second(data)
    End function
    utilizzando all'inizio di ogni pagina (dove ho a che fare con le date)
    codice:
    <%Session.LCID = 1040%>
    imposto la visualizzazione della data nel formato italiano a prescindere da qualsiasi formato di data ci sia settato sul server.

    quando devo estrarre le date dal db ed eseguire operazioni (somme, differenze, etc...) tra le date, basta estrarle normalmente tramite una normalissima query ed effettuare le operazioni con le funzioni data fornite da vbs.

  9. #29
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    allacciandomi al discorso date ho riscontrato un problema assai strano...

    passando dal 2004 al 2005 mi si è invertita la scrittura nel db access, prima mi scriveva gg/mm/aaaa adesso mm/gg/aaaa nonostante che io abbia messo:

    oggid = day(date())
    oggim = month(date())
    oggiy = year(date())
    strData = oggid & "/" & oggim & "/" & oggiy

    la cosa piu strana è che nel server interno funziona tutto bene, mentre in internet no!!!

    non so che pensare!!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  10. #30
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Originariamente inviato da yro
    allacciandomi al discorso date ho riscontrato un problema assai strano...

    passando dal 2004 al 2005 mi si è invertita la scrittura nel db access, prima mi scriveva gg/mm/aaaa adesso mm/gg/aaaa nonostante che io abbia messo:

    oggid = day(date())
    oggim = month(date())
    oggiy = year(date())
    strData = oggid & "/" & oggim & "/" & oggiy

    la cosa piu strana è che nel server interno funziona tutto bene, mentre in internet no!!!

    non so che pensare!!
    tra l'altro se provo con un campo testo gennaio me lo crive con 1 e non 01... come si fa a inserire lo zero in caso di un numero singolo??

    grassie!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.