За Microsoft Access 97 версия на тази статия вижте
130514.

Умерено: Изисква основни макро кодиране и съвместна работа умения.

Резюме

Тази статия се описва как Microsoft Access съхранява данните за дата/час тип. Тази статия се описва защо може да получите неочаквани резултати при изчисляване на датите и часовете или сравняване на дати и часове.

В тази статия са засегнати следните теми:

  • Съхраняване на данни за дата/час

  • Форматиране на поле за дата и час

  • Изчисляване на данни за точно време

  • Сравняване на данни дата

  • Сравняване на данни за точно време

Допълнителна информация

Съхраняване на данни за дата/час

Достъп до магазини, типът на данните за дата и час като двойна точност, плаваща номер 15 десетичен. Цяло число част от двойна точност номер представлява дата. Десетичната част представлява времето.

Валидната дата цени варират от-657,434 (1 януари 100 г.) 2,958,465 (31 декември 9999 г.). Дата на стойност 0 представлява 30 декември 1899. Access съхранява датите преди 30 декември 1899 като отрицателни числа.

Валиден път стойности варират от.0 (00: 00:00) на.99999 (23: 59:59). Цифра представлява част от един ден. Можете да конвертирате цифра за часове, минути и секунди като умножава цифра от 24.

Следната таблица показва как Access съхранява дата/час:
Double Date Actual Time Actual
number portion date portion time
------------------------------------------------------------------

1.0 1 December 31, 1899 .0 12:00:00 A.M.
2.5 2 January 1, 1900 .5 12:00:00 P.M.
27468.96875 27468 March 15, 1975 .96875 11:15:00 P.M.
36836.125 36836 November 6, 2000 .125 3:00:00 A.M.
За да видите как достъп съхранява стойности на дата и час като числа, въведете следните команди в прозореца, натиснете ENTER и забележете резултати:

?CDbl(#5/18/1999 14:00:00#)
Доведе до равенство: 36298.5833333333

?CDbl(#12/14/1849 17:32:00#)
Доведе до равенство:-18278.7305555556

За да видите датата и часа на числени стойности, въведете следните команди в прозореца, натиснете ENTER и забележете резултати:

?CVDate(1.375)
Доведе до равенство: 12/31/1899 9:00:00 ч.

?CVDate(-304398.575)
Доведе до равенство: 8/1/1066 1:48:00 ч.

Форматиране на поле за дата и час

Можете да форматирате дата стойност за показване на дата, час или и двете. Когато използвате дата формат, Access съхранява стойност 0 време част. Когато използвате времето формат, Access съхранява стойност 0 за датата част.

Следната таблица показва как Access съхранява стойности на дата и час. Следната таблица показва също така как можете да покажете тези стойности с помощта на различни формати:
Stored value Default format Custom format
(double number) (General Date) (mm/dd/yyyy hh:nn:ss A.M./P.M.)
---------------------------------------------------------------------

36295.0 5/15/99 05/15/1999 12:00:00 AM
0.546527777777778 1:07 PM 12/30/1899 01:07:00 PM
36232.9375 3/13/99 10:30PM 03/13/1999 10:30:00 PM
Забележка: Формат по подразбиране за дата стойност е обща дата. Ако стойността е само дата, не се появява. Ако стойността е само за време, не се появява.

Изчисляване на данни за точно време

Тъй като времето стойност се съхранява като част от 24-часа на ден, може да получите форматиране неправилни резултати при изчисляване на интервали по-голяма от 24 часа. За да заобиколите този проблем, можете да създадете потребителски функция, за да се уверите, че интервалите са форматирани правилно.

Microsoft предоставя примери само за илюстративни цели без изрични или подразбиращи се. Това включва, но не е ограничено до, подразбиращи се гаранции за продаваемост или годност за определена цел. Тази статия се предполага, че сте запознати с демонстрирания език за програмиране и инструментите, които се използват за създаване и процедури за отстраняване на грешки. Инженерите на поддръжката на Microsoft могат да помогнат с обяснение на функциите на конкретна процедура, но няма да могат да модифицират тези примери с цел осигуряване на допълнителна функционалност или създаване на процедури за удовлетворение на конкретните ви изисквания. За коректното изчисляване и да форматирате интервалите, изпълнете следните стъпки:

  1. Създаване на модул и въведете следния ред в раздела за декларации ако следния ред вече не е там:

    Option Explicit
  2. Въведете следната процедура:

    '------------------------------------------------------------------
    ' This function calculates the elapsed time between two values and then
    ' formats the result in four different ways.
    '
    ' The function accepts interval arguments such as the following:
    '
    ' #5/12/95 6:00:00AM# - #5/11/95 10:00:00PM#
    '
    '
    '
    ' [End Time]-[Start Time]
    '------------------------------------------------------------------

    Function ElapsedTime (Interval)
    Dim x
    x = Int(CSng(Interval * 24 * 3600)) & " Seconds"
    Debug.Print x
    x = Int(CSng(Interval * 24 * 60)) & ":" & Format(Interval, "ss") _
    & " Minutes:Seconds"
    Debug.Print x
    x = Int(CSng(Interval * 24)) & ":" & Format(Interval, "nn:ss") _
    & " Hours:Minutes:Seconds"
    Debug.Print x
    x = Int(CSng(Interval)) & " days " & Format(Interval, "hh") _
    & " Hours " & Format(Interval, "nn") & " Minutes " & _
    Format(Interval, "ss") & " Seconds"
    Debug.Print x

    End Function
  3. Въведете следния ред в прозореца и след това натиснете ENTER:

    ? ElapsedTime(#6/1/1999 8:23:00PM#-#6/1/1999 8:12:12AM#)
    Обърнете внимание, че се появяват следните стойности:

    43848 секунди
    730:48 Minutes:Seconds
    12:10:48 Hours:Minutes:Seconds
    0 дни 12 часа 10 минути преди

Сравняване на данни дата

Тъй като датите и часовете са съхранени като числа с двойна точност, може да получите неочаквани резултати при сравняване на данни за дата и час. Например, ако въведете следния израз в прозореца, получавате невярно резултат дори днес е 3/31/1999:

? Now()=DateValue("3/31/1999")
Now() извежда двойна точност число, което представлява текущата дата и текущото време. Обаче функцията DateValue() връща цяло число, представляващо дата, но не частична времева стойност. Затова Now() равен DateValue() само когато Now() се връща един от 00:00:00 (12:00:00 ч.).

За да получите точни резултати, когато сравните стойности, използвайте един от следните функции. За да тествате всяка функция, въведете функцията в прозореца, замени текущата дата за 3/31/1999 и натиснете ENTER:

  • За да върнете стойност на число, използвайте функцията Date() :

    ?Date()=DateValue("3/31/1999")

  • За да премахнете дробна част от функцията Now() , използвайте функцията Int() :

    ?Int(Now())=DateValue("3/31/1999")

Сравняване на данни за точно време

Когато се сравняват стойностите за време, може да получите противоречиви резултати защото времето стойност се съхранява като дробна част от двойна точност, плаваща номер. Например ако въведете следния израз в прозореца, получавате резултат false (0) Въпреки че два пъти стойности изглеждат по същия начин:

var1 = #2:01:00 PM#
var2 = DateAdd ("n" 10, var1)
? var2 = #2:11:00 PM#
Когато достъп се конвертира стойност за време част, резултатът не може да бъде идентична със стойността на времето. Малка разлика, причинени от изчислението е достатъчно да дават резултат false (0), когато сравняват съхранена стойност е постоянна стойност.

За да получите точни резултати при сравнение час, използвайте един от следните методи. За всеки метод, въведете всеки метод в прозореца и след това натиснете ENTER:

Добавете свързвам дата време сравнение:

var1 = #1/1/99 2:01:00 PM#
var2 = DateAdd ("n" 10, var1)
? var2 = #1/1/99 2:11:00 PM#
Конвертиране времевите стойности за типовете данни в низ, преди да ги сравните:

var1 = #2:01:00 PM#
var2 = DateAdd ("n" 10, var1)
? CStr(var2) = CStr(#2:11:00 PM#)
Използвайте функцията DateDiff() да сравните точните единици като секунди:

var1 = #2:01:00 PM#
var2 = DateAdd ("n" 10, var1)
? DateDiff ("s", var2, # 2:11:00 PM #) = 0

Препратки

За повече информация за изчисляване на стойности на дата и час щракнете върху следния номер на статия в базата знания на Microsoft:

210604 функции за изчисляване и показване на дата/час на достъпа

За повече информация как да форматирате типовете данни в момента, щракнете върху Помощ за Microsoft Access за
Помощ , въведете формат свойство - дата/час тип данни в Office помощника или съветника за отговори и след това щракнете върху търсене , за да видите темата.

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Доколко сте доволни от качеството на превода?
Какво е повлияло на вашия потребителски опит?

Благодарим ви за обратната връзка!

×