Microsoft Access에서 날짜/시간 데이터를 저장, 계산 및 비교하는 방법

요약

이 문서에서는 Microsoft Access에서 날짜/시간 데이터 형식을 저장하는 방법을 설명합니다. 이 문서에서는 날짜와 시간을 계산하거나 날짜와 시간을 비교할 때 예기치 않은 결과를 받을 수 있는 이유에 대해서도 설명합니다.

이 문서에서는 다음 topics 설명합니다.

  • 날짜/시간 데이터 저장
  • 날짜/시간 필드 서식 지정
  • 시간 데이터 계산
  • 날짜 데이터 비교
  • 시간 데이터 비교

추가 정보

날짜/시간 데이터 저장

Access는 날짜/시간 데이터 형식을 15자리까지 배정밀도 부동 소수점 숫자로 저장합니다. 배정밀도 숫자의 정수 부분은 날짜를 나타냅니다. 10진수 부분은 시간을 나타냅니다.

유효한 날짜 값은 -657,434(서기 1월 1일)부터 2,958,465(서기 9999년 12월 31일)에 이르기까지 다양합니다. 날짜 값 0은 1899년 12월 30일을 나타냅니다. Access는 1899년 12월 30일 이전 날짜를 음수로 저장합니다.

유효한 시간 값은 .0(00:00:00)에서 .99999(23:59:59)에 이르기까지 다양합니다. 숫자 값은 1일의 분수를 나타냅니다. 숫자 값을 24로 곱하여 숫자 값을 시간, 분, 초로 변환할 수 있습니다.

다음 표에서는 Access에서 날짜/시간 값을 저장하는 방법을 보여줍니다.

이중 번호 날짜 부분 실제 날짜 시간 부분 실제 시간
1.0 1 1899년 12월 31일 .0 오전 12:00:00
2.5 2 1900년 1월 1일 .5 오후 12:00:00
27468.96875 27468 1975년 3월 15일 .96875 오후 11:15:00
36836.125 36836 2000년 11월 6일 .125 오전 3:00:00

Access에서 날짜/시간 값을 숫자로 저장하는 방법을 보려면 직접 실행 창에 다음 명령을 입력하고 Enter 키를 누른 다음 결과를 확인합니다.

? CDbl(#5/18/1999 14:00:00#)

결과 등가: 36298.5833333333

? CDbl(#12/14/1849 17:32:00#)

결과 등가: -18278.73055555556

숫자 값의 날짜와 시간을 보려면 직접 실행 창에 다음 명령을 입력하고 Enter 키를 누른 다음 결과를 확인합니다.

? CVDate(1.375)

결과 등가: 12/31/1899 9:00:00 AM

? CVDate(-304398.575)

결과 등가: 8/1/1066 1:48:00 PM

날짜/시간 필드 서식 지정

날짜/시간 값의 서식을 지정하여 날짜, 시간 또는 둘 다를 표시할 수 있습니다. 날짜 전용 형식을 사용하는 경우 Access는 시간 부분에 대해 0 값을 저장합니다. 시간 전용 형식을 사용하는 경우 Access는 날짜 부분에 대해 0 값을 저장합니다.

다음 표에서는 Access에서 날짜/시간 값을 저장하는 방법을 보여줍니다. 다음 표에서는 다른 형식을 사용하여 이러한 값을 표시하는 방법도 보여 줍니다.

저장된 값(이중 숫자) 기본 형식(일반 날짜) 사용자 지정 형식(mm/dd/yyyy hh:nn:ss A.M./P.M.)
36295.0 5/15/99 1999년 5월 15일 오전 12:00:00
0.546527777777778 오후 1:07 1899년 12월 30일 오후 01:07:00
36232.9375 3/13/99 10:30PM 03/13/1999 10:30:00 PM

참고 날짜/시간 값의 기본 형식은 일반 날짜입니다. 값이 날짜 전용이면 시간이 나타나지 않습니다. 값이 시간 전용이면 날짜가 표시되지 않습니다.

시간 데이터 계산

시간 값은 하루 24시간에 대한 소수로 저장되므로 24시간보다 큰 시간 간격을 계산할 때 결과의 형식이 잘못될 수 있습니다. 이 동작을 해결하려면 사용자 정의 함수를 만들어 시간 간격의 형식이 올바르게 지정되었는지 확인할 수 있습니다.

Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다. 올바르게 계산하고 시간 간격의 서식을 지정하려면 다음 단계를 수행합니다.

  1. 모듈을 만든 다음, 다음 줄이 아직 없는 경우 선언 섹션에 다음 줄을 입력합니다.

    옵션 명시적

  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 Seconds
730:48 Minutes:Seconds
12:10:48 Hours:Minutes:Seconds
0 days 12 Hours 10 Minutes 48 Seconds

날짜 데이터 비교

날짜 및 시간은 이중 정밀도 숫자로 함께 저장되므로 날짜/시간 데이터를 비교할 때 예기치 않은 결과가 나타날 수 있습니다. 예를 들어 직접 실행 창에 다음 식을 입력하면 오늘 날짜가 1999년 3월 31일인 경우에도 False 결과가 표시됩니다.

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

Now() 함수는 현재 날짜와 현재 시간을 나타내는 배정밀도 숫자를 반환합니다. 그러나 DateValue() 함수는 날짜를 나타내는 정수 숫자를 반환하지만 소수 시간 값은 반환하지 않습니다. 따라서 Now()는 Now()가 00:00:00(오전 12:00:00)의 시간을 반환하는 경우에만 DateValue()와 같습니다.

날짜 값을 비교할 때 정확한 결과를 얻으려면 다음 함수 중 하나를 사용합니다. 각 함수를 테스트하려면 직접 실행 창에 함수를 입력하고 현재 날짜를 1999년 3월 31일로 대체한 다음 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#

Access에서 시간 값을 분수로 변환하는 경우 계산된 결과가 시간 값과 동일하지 않을 수 있습니다. 계산으로 인한 작은 차이는 저장된 값을 상수 값과 비교할 때 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

참조

날짜 값 및 시간 값 계산에 대한 자세한 내용은 DateSerial 함수를 참조하세요.

날짜/시간 데이터 형식의 서식을 지정하는 방법에 대한 자세한 내용은 도움말 메뉴에서 Microsoft Access Help를 클릭하고 Office 도우미 또는 응답 마법사에서 형식 속성 - 날짜/시간 데이터 형식을 입력한 다음 검색을 클릭하여 항목을 확인합니다.