Utilizzo del tipo di dati Data/ora estesa

Si applica a
Access per Microsoft 365 Access 2024 Access 2021

Il tipo di dati Data/ora estesa archivia le informazioni relative alla data e all'ora analogamente al tipo di dati Data/ora, pur fornendo un intervallo di date più ampio, una precisione frazionaria superiore e maggiore compatibilità con il tipo di data datetime2 di SQL Server. Con l'importazione o il collegamento di dati di Access a SQL Server, è possibile associare costantemente un campo Data/ora estesa di Access a una colonna datetime2 di SQL Server. Per ulteriori informazioni, vedere datetime2 (Transact-SQL).

Intervallo esteso data/oraAvviso Quando si creano espressioni e si usano funzioni di data/ora basate sul tipo di dati Data/ora estesa in Access, è possibile che si perda la precisione nei calcoli o si verifichino altri problemi con i risultati. Il problema è noto e nella prossima release è previsto un supporto migliore di espressioni e funzioni. Per risolvere il problema, è possibile creare una query pass-through per usare le funzioni data/ora e l'espressione SQL Server equivalenti. Per ulteriori informazioni, vedere Confronto tra SQL per Access e T-SQL per SQL Server.

Contenuto dell'articolo

Confronto tra i tipi di dati Data/ora e Data/ora estesa Utilizzo del tipo di dati Data/ora estesa Considerazioni sulla compatibilità con le versioni precedenti Utilizzo del tipo di dati Data/ora estesa come una stringa di VBA

Confronto tra i tipi di dati Data/ora e Data/ora estesa

Nelle tabelle seguenti sono riepilogate le importanti differenze tra i due tipi di dati.

Attributo Data/ora Data/ora estesa
Valore minimo 100-01-01 00:00:00 0001-01-01 00:00:00
Valore massimo 9999-12-31 23:59:59.999 9999-12-31 23:59:59.9999999
Precisione 0,001 secondi 1 nanosecondo
Dimensione Virgola mobile a precisione doppia Stringa codificata di 42 byte

Inizio pagina

Utilizzo del tipo di dati Data/ora estesa

Le informazioni seguenti descrivono importanti considerazioni sull'utilizzo.

Visualizzazione Struttura tabella Per sfruttare un intervallo di dati più ampio e una maggiore precisione, è possibile aggiungere un campo a una tabella di Access. È anche possibile convertire un tipo di dati Data/ora nel tipo di dati Data/ora estesa nella visualizzazione Struttura per le tabelle. L'uso di questo tipo di dati è supportato anche come campo di chiave primaria. Per altre informazioni, vedere Creare una tabella e aggiungere campi.

Immissione della data e dell'ora L'immissione di valori di data e ora è simile al tipo di dati Data/ora, con la differenza che è anche possibile immettere un nanosecondo frazionario. Ad esempio:

  • Formato di immissione: mm/gg/aaaa hh: mm: ss. nnnnnnn
  • Ad esempio: 06/15/1215 09:25:3.234

Se sono presenti più di 7 nanosecondi frazionari, sono arrotondati a 7 cifre. Per controllare la visualizzazione dei nanosecondi frazionari, aprire la tabella, sulla barra multifunzione selezionare Campi e nel gruppo Formattazione selezionare Aumenta l'immagine del pulsanteDecimali o Riduci decimaliimmagine del pulsante .

Formattazione Entrambi i tipi di dati Data/ora e Data/ora estesa usano stringhe di formattazione standard simili di Data generica, Data estesa, Data breve, Data breve, Ora estesa, Ora breve e Ora breve ed entrambi supportano la formattazione personalizzata. Per il tipo di dati Data/ora estesa, i formati standard basati sull'ora supportano anche precisione frazionaria per i nanosecondi. La formattazione del tipo di dati Data/ora estesa assume il valore predefinito dei formati Data generica e Ora estesa e segue le opzioni specificate nelle Impostazioni internazionali di Windows. È anche possibile controllare la formattazione della precisione frazionaria usando la proprietà Posizioni decimali per specificare il numero di cifre a destra della virgola decimale (da 1 a 7).

Collegare e importare È anche possibile collegare o importare da database con un tipo di dati corrispondente, ad esempio il tipo di dati SQL Server datetime2. Sono supportati i database SQL Server versione 2014 o successive. Il tipo di dati Data/ora estesa richiede l'uso di Microsoft ODBC Driver for SQL Server 11 o versione successiva. È consigliabile usare Microsoft ODBC Driver 13.1 per SQL Server. È supportato anche l'uso di OLE DB. Per altre informazioni, vedere Supporto dei tipi di dati per i miglioramenti di data e ora ODBC e Usare le caratteristiche di data e ora avanzate (OLE DB).

Maschere e report È possibile aggiungere il tipo di dati Data/ora estesa a una maschera o a un report. In una maschera è possibile usare il controllo selezione data e la maschera di input per immettere una data con l'intervallo più ampio, ma non la precisione frazionaria per i nanosecondi.

Supporto espressioni Il tipo di dati Data/ora estesa supporta le funzioni di aggregazione SQL e la valutazione delle espressioni. Ad esempio, se si usa LoggedDateTime come campo con il tipo di dati Data/ora estesa:

Attività Esempio Risultato
Individuare il valore minimo Min (LoggedDateTime) La prima data e ora dell'intervallo
Estrarre il mese Mese (LoggedDateTime) Il nome del mese, ad esempio gennaio
Aggiungere un giorno [LoggedDateTime]+1 Martedì diventerà mercoledì

Inizio pagina

Considerazioni sulla compatibilità con le versioni precedenti

Il tipo di dati Data/ora estesa non è compatibile con le versioni precedenti di Microsoft Access. Se il tipo viene usato all'interno di una tabella di Access locale, le versioni di Access che non includono la caratteristica non potranno aprire il database.

È possibile abilitare o disabilitare il tipo di dati Data/ora estesa per le operazioni di collegamento e importazione con l'opzione Accesso al database correnteche supporta il tipo di dati esteso Data/ora per le tabelle collegate/lmported. Per altre informazioni, vedere Impostare le opzioni utente per il database corrente.

Inizio pagina

Utilizzo del tipo di dati Data/ora estesa come una stringa di VBA

I seguenti esempi di VBA usano metodi DAO per visualizzare, immettere e valutare il tipo di dati Data/ora estesa in base alla tabella seguente.

ID DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001

Nome tabella: DTETable
Tipo di dati ID: Contatore
Tipo di dati DTEData: Data/ora estesa
Tipo di dati DTData: Data/ora

Ad esempio: Visualizzazione di data e ora

L'esempio seguente mostra la data e l'ora. Il formato usato è mm/gg/aaaa hh:mm:ss.nnnnnnn in 24 ore. Il formato non è personalizzabile.


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("DTETable")
Do Until rs.EOF
    Debug.Print rs!DTETable
    rs.MoveNext
Loop

Risultato Access visualizza: 01/01/0002 01:01:03.1234567.

Ad esempio: Immissione di data e ora

L'esempio seguente immette la data e l'ora con un formato stringhe. Sono supportati tutti i formati standard di data e ora.


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("DTETable")
With CurrentDb.OpenRecordset("DTETable")
    .AddNew
    ![DTEData] = "1/1/9999 1:1:1.0123 AM"
    ![DTData] = #1/1/2001#
    .Update
End With

Risultato Access aggiunge una nuova riga (ID = 2):

ID DTEData DTData
1 1/1/2 1:01:03.1234567 AM 1/1/2001
2 1/1/9999 1:01:01.0123000 AM 1/1/2001

Ad esempio: Valutazione di un'espressione di query

Nell'esempio seguente viene usata la Funzione Day per estrarre il numero di giorno dai campi di data e ora.


Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT Day(DTEData) as day FROM DTETable")
Do Until rs.EOF
    Debug.Print "The day of the month is: "&rs!day
    rs.MoveNext
Loop

Risultato Access visualizza:

Il giorno del mese è: 1
Il giorno del mese è: 1

Funzioni che funzionano con Data/ora estesa nelle espressioni di query

Le funzioni seguenti funzionano con Data/ora estesa nelle espressioni di query:
​​​​​​​
Anno, Mese, Giorno Feriale, Giorno, Ora, Minuto, Secondo, DateAdd, DateDiff e DatePart.

Esistono inoltre versioni estese di alcune funzioni che non possono usare il tipo di argomento per determinare che il calcolo deve produrre un valore Di data/ora estesa. Ecco come procedere:

DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended e TimeExtended.

Queste funzioni funzionano allo stesso modo della funzione senza "Extended" alla fine, ma restituiscono un valore Di data/ora estesa, invece di un valore Di data/ora.

Si noti che VBA non è stato modificato, le nuove funzioni non verranno riconosciute nel codice VBA e le funzioni esistenti non funzioneranno con i valori Di data/ora estesa.

Esempio

Query originale:


Select DateValue([OrderDate]) AS OrderDateOnly_DateValue

, Format([OrderDate],"Short Date") AS OrderDateOnly_Format

From tblOrders

Modificare ora DateValue([OrderDate]) in DateValueExtended([OrderDate]), che correggerà la prima espressione.

Si noti che Access non gestisce la funzione Format per le colonne Data/ora estesa; è sufficiente impostare la proprietà Format per la colonna.

Di conseguenza, se si usa:


SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate

FROM Table1;

Impostare inoltre la proprietà Formato per la seconda colonna su "Data breve", si otterranno i risultati desiderati.

Inizio pagina

Vedere anche

Introduzione ai tipi di dati e alle proprietà dei campi

Formattare un campo di data e ora

Creare o eliminare un campo di data e ora