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).

Data/ora Intervallo esteso Avviso Quando si creano espressioni e si usano funzioni di data/ora basate sul tipo di dati Data/ora estesa in Access, la precisione dei calcoli potrebbe andare persa o verificarsi 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 l'intervallo di dati più grande e la 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 di data e ora L'immissione di valori di data e ora è simile al tipo di dati Data/ora, ad eccezione del fatto che è possibile immettere anche una frazione di nanosecondo. 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 l'immagine del pulsante Aumenta decimali o l'immagine del pulsante Riduci decimali.

Formattazione Entrambi i tipi di dati Data/ora e Data/ora estesa usano stringhe di formattazione standard simili come Data generale, Data lunga, Data media, Data breve, Lungo tempo, Medio tempo e Breve e supportano entrambi 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).

Collegamento e importazione È inoltre possibile collegare o importare dati 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 funzionalità avanzate di data e ora (OLE DB).

Maschere e report È possibile aggiungere il tipo di dati Data/ora estesa a una maschera o 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 delle 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 questa caratteristica non saranno in grado di aprire il database.

È possibile abilitare o disabilitare il tipo di dati Data/ora estesa per il collegamento e l'importazione di operazioni con l'opzione Accesso al database correnteSupporta il tipo di dati esteso data/ora per tabelle collegate/trasferite. 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: Numerazione automatica
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 Visualizzazioni di Access: 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:
​​​​​​​
Year, Month, Weekday, Day, Hour, Minute, Second, DateAdd, DateDiff e DatePart.

Inoltre, esistono versioni estese di alcune funzioni che non possono usare il tipo di argomento per determinare se il calcolo deve produrre un valore esteso data/ora. Questi sono:

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 Data/ora estesa, anziché un valore 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 estesi di data/ora.

Esempio

Query originale:


Select DateValue([OrderDate]) AS OrderDateOnly_DateValue

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

From tblOrders

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

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

Pertanto, se si usa:


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

FROM Table1;

E impostare la proprietà Format per la seconda colonna su "Data breve", per ottenere 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