Datos / laiko išplėstinis duomenų tipas saugo datos ir laiko informaciją ir yra panašus į datos / laiko duomenų tipą, tačiau suteikia didesnį datos diapazoną, didesnį trupmeninį tikslumą ir suderinamumą su „SQL Server“ datetime2 datos tipu. Kai importuojate arba susiejate "Access" duomenis su "„SQL Server“", galite nuosekliai susieti "Access" lauką "Date/Time Extended" su stulpeliu "„SQL Server“ datetime2". Daugiau informacijos žr. datetime2 (Transact-SQL).
įspėjimas Kai kuriate reiškinius ir naudojate datos / laiko funkcijas pagal datos / laiko išplėstinių duomenų tipą programoje "Access", galite prarasti skaičiavimų tikslumą arba susidurti su kitomis rezultatų problemomis. Žinome apie šią problemą ir būsimame leidime planuojame geriau palaikyti reiškinius ir funkcijas. Kaip sprendimą galite sukurti tiesioginę užklausą, kad galėtumėte naudoti lygiavertes „SQL Server“ išraiškos ir datos / laiko funkcijas. Daugiau informacijos rasite "Access SQL" palyginimas su "„SQL Server“ TSQL".
Šiame straipsnyje:
Datos / laiko ir datos / laiko išplėstinių duomenų tipų palyginimas
Toliau pateiktose lentelėse apibendrinami svarbūs skirtumai tarp dviejų duomenų tipų.
| Atributas | Data / laikas | Pratęsimo data / laikas |
|---|---|---|
| Minimali reikšmė | 100-01-01 00:00:00 | 0001-01-01 00:00:00 |
| Maksimali reikšmė | 9999-12-31 23:59:59.999 | 9999-12-31 23:59:59.9999999 |
| Tikslumas | 0,001 sekundės | 1 nanosekundė |
| Dydis | Dvigubo tikslumo slankusis kablelis | Užkoduota 42 baitų eilutė |
Datos / laiko išplėstinių duomenų tipo naudojimas
Toliau pateikiama informacija apie svarbius naudojimo aspektus.
Table Design View Norėdami pasinaudoti didesniu duomenų diapazonu ir didesniu tikslumu, galite įtraukti lauką į "Access" lentelę. Taip pat lentelės dizaino rodinyje galite konvertuoti datą / laiką į datos / laiko išplėstinių duomenų tipą. Šio tipo duomenų naudojimas kaip pirminio rakto lauko taip pat palaikomas. Daugiau informacijos rasite Lentelės kūrimas ir laukų įtraukimas.
Datos ir laiko įvedimas Datos ir laiko reikšmių įvedimas yra panašus į datos / laiko duomenų tipą, išskyrus tai, kad taip pat galite įvesti trupmeninę nanosekundę. Pavyzdžiui:
- Įrašo formatas: mm/dd/yyyy hh:mm:ss.nnnnnnn
- Pavyzdys: 06/15/1215 09:25:3.234
Jei yra daugiau nei 7 trupmeninės nanosekundės, jos suapvalinamos iki 7 skaitmenų. Norėdami valdyti trupmeninių nanosekundžių rodymą, atidarykite lentelę, juostelėje pasirinkite Laukai ir grupėje Formatavimas pasirinkite Mygtuko Didinti dešimtaines dalis
Mažinti dešimtainių skaičių mygtuko
.
Formatavimas Tiek datos / laiko, tiek datos / laiko išplėstinių duomenų tipuose naudojamos panašios standartinės formatavimo eilutės: Bendroji data, Ilgoji data, Vidutinė data, Trumpoji data, Ilgasis laikas, Vidutinis laikas ir Trumpasis laikas , ir abu palaiko pasirinktinį formatavimą. Išplėstinio datos / laiko duomenų tipo laiku pagrįsti standartiniai formatai taip pat palaiko dalinį tikslumą nanosekundėmis. Datos / laiko išplėstinių duomenų tipo formatavimas pagal numatytuosius parametrus yra bendrosios datos ir ilgojo laiko formatai ir taikomos parinktys, nurodytos "Windows" regiono parametruose. Taip pat galite valdyti trupmeninio tikslumo formatavimą naudodami ypatybę Decimal Places, kad nurodytumėte skaitmenų skaičių į dešinę nuo dešimtainio kablelio (1–7).
Susiejimas ir importavimas Taip pat galite susieti arba importuoti iš duomenų bazių su atitinkamu duomenų tipu, pvz., „SQL Server“ datetime2 duomenų tipu. Palaikomos 2014 m. arba naujesnės versijos „SQL Server“ duomenų bazės. Datos / laiko pratęsimo duomenų tipui reikia naudoti "„Microsoft“" ODBC tvarkyklę, skirtą "„SQL Server“ 11" arba naujesnei versijai. Rekomenduojame naudoti "„Microsoft“" ODBC tvarkyklę 13.1, skirtą „SQL Server“. Taip pat palaikomas OLE DB naudojimas. Daugiau informacijos žr. Duomenų tipo palaikymas ODBC datos ir laiko patobulinimams ir Išplėstinių datos ir laiko funkcijų (OLE DB) naudojimas.
Formos ir ataskaitos Galite įtraukti duomenų tipą Išplėstinė data / laikas į formą arba ataskaitą. Formoje galite naudoti datos parinkiklį ir įvesties šabloną, kad įvestumėte datą su didesniu diapazonu, bet ne trupmeniniu nanosekundžių tikslumu.
Reiškinių palaikymas Datos / laiko išplėstinių duomenų tipas palaiko SQL agregavimo funkcijas ir reiškinio vertinimą. Pavyzdžiui, naudojant LoggedDateTime kaip lauką su datos/laiko išplėstinių duomenų tipu:
| Užduotis | Pavyzdys | Rezultatas |
|---|---|---|
| Mažiausios reikšmės radimas | Min(LoggedDateTime) | Anksčiausia intervalo data ir laikas |
| Mėnesio išskleidimas | Month(LoggedDateTime) | Mėnesio pavadinimas, pvz., sausis |
| Įtraukti vieną dieną | [LoggedDateTime]+1 | Antradienis taptų trečiadieniu |
Atgalinio suderinamumo aspektai
Datos / laiko pratęsimo duomenų tipas nesuderinamas su ankstesnėmis "Microsoft Access" versijomis. Jei tipas naudojamas vietinėje "Access" lentelėje, "Access" versijos, kuriose ši funkcija neapima, duomenų bazės atidaryti negalės.
Galite įjungti arba išjungti datos / laiko išplėstinių duomenų tipą susiejimo ir importavimo operacijoms naudodami dabartinės duomenų bazės prieigos parinktį Palaikyti datos / laiko išplėstinių duomenų tipą, skirtą susietoms / lmportuotoms lentelėms. Daugiau informacijos rasite Vartotojo parinkčių dabartinei duomenų bazei nustatymas.
Datos / laiko išplėstinių duomenų tipo naudojimas kaip eilutės VBA
Tolesniuose VBA pavyzdžiuose naudojami DAO metodai, siekiant parodyti, įvesti ir įvertinti išplėstinės datos / laiko duomenų tipą pagal toliau pateiktą lentelę.
| ID | DTEData | DTData |
|---|---|---|
| 1 | 1/1/2 1:01:03.1234567 AM | 1/1/2001 |
Lentelės pavadinimas: Galima DTETuoti
ID duomenų tipas: Automatinis numeravimas
DTEData duomenų tipas: Pratęsimo data / laikas
DTData duomenų tipas: Data / laikas
Pavyzdys: datos ir laiko rodymas
Šiame pavyzdyje rodoma data ir laikas. Naudojamas formatas mm/dd/MMMM hh:mm:ss.nnnnnnnn 24 valandų formatu. Formato tinkinti negalima.
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
Rezultatas Prieiga rodo: 01/01/0002 01:01:03.1234567.
Pavyzdys: datos ir laiko įvedimas
Toliau pateiktame pavyzdyje data ir laikas įvedami naudojant eilutės formatą. Palaikomi visi standartiniai datos ir laiko formatai.
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
Rezultatas "Access" įtraukia naują eilutę (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 |
Pavyzdys: užklausos išraiškos įvertinimas
Toliau pateiktame pavyzdyje naudojama dienos funkcija dienos skaičiui iš datos ir laiko laukuose gauti.
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
Rezultatas Programa Access rodo:
Mėnesio diena yra: 1
Mėnesio diena yra: 1
Funkcijos, veikiančios su užklausų išraiškose išplėsta data / laiku
Šios funkcijos veikia su datos / laiko pratęsimu užklausų išraiškose:
Metai, mėnuo, savaitės diena, diena, valanda, minutė, sekundė, DateAdd, DateDiff ir DatePart.
Be to, yra kai kurių funkcijų išplėstinių versijų, kurios negali naudoti argumento tipo norint nustatyti, kad skaičiavimas turėtų pateikti datos / laiko išplėstinę reikšmę. Tai yra:
DateValueExtended, TimeValueExtended, DateSerialExtended, TimeSerialExtended, NowExtended, DateExtended, DateTimeExtended ir TimeExtended.
Šios funkcijos veikia taip pat, kaip funkcija be "Išplėstinis" pabaigoje, tačiau pateikia datos / laiko pratęsimo reikšmę, o ne datos / laiko reikšmę.
Atkreipkite dėmesį, kad VBA nebuvo modifikuota, naujos funkcijos nebus atpažįstamos VBA kode ir esamos funkcijos neveiks su datos / laiko išplėstinėmis reikšmėmis.
Pavyzdys
Pradinė užklausa:
Select DateValue([OrderDate]) AS OrderDateOnly_DateValue
, Format([OrderDate],"Short Date") AS OrderDateOnly_Format
From tblOrders
Dabar pakeiskite DateValue([UžsakymoData]) į DateValueExtended([UžsakymoData]), taip pataisysite pirmąjį reiškinį.
Atkreipkite dėmesį, kad "Access" neapdoroja datos / laiko išplėstinių stulpelių formatavimo funkcijos; galite tiesiog nustatyti stulpelio ypatybę Formatas.
Todėl, jei naudojate:
SELECT DateValueExtended([OrderDate]) AS OrderDateOnly_DateValue, Table1.OrderDate
FROM Table1;
Ir nustatykite antrojo stulpelio ypatybę Formatas į "Trumpoji data", gausite norimus rezultatus.
Taip pat žr.
Įvadas į duomenų tipus ir laukų ypatybes