다음을 통해 공유


CIM_DATETIME

WMI 및 CIM과 관련된 두가지 고정 길이 형식 중 하나를 사용하여 WMI의 모든 CIM(일반 정보 모델) 날짜 및 시간에 액세스할 수 있습니다. 스크립팅에서는 SWbemDateTime 개체를 사용하여 이러한 날짜 및 시간을 일반 날짜 및 시간으로 변환합니다.

다음 섹션에서는 WMI 날짜 및 시간 형식을 사용하는 방법을 설명합니다.

서식

다음 표에는 WMI에서 사용하는 두 가지 날짜 및 시간 형식이 나와 있습니다.

서식 설명
DATETIME
yyyymmddHHMMSS.mmmmmmsUUU
CIM DATETIME 값이 저장되는 형식입니다. 이 형식은 로캘에 독립적이므로, 어떤 컴퓨터에서도 실행되는 스크립트를 작성할 수 있습니다. MOF(Managed Object Format)에서 날짜 및 시간을 정의하거나, WMI용 COM API 또는 WMI용 스크립팅 API를 사용하여 인스턴스에 쓸 때는 반드시 이 형식을 사용해야 합니다. 자세한 내용은 인스턴스 속성 수정을 참조하세요.
WQL(WMI 쿼리 언어) 쿼리에서만 유효한 형식입니다.
yyyy-mm-dd HH:MM:SS:mmm
이 형식은 SWbemDateTime 메서드를 사용하는 스크립트에서 사용할 수 있습니다. 자세한 내용은 WMI 쿼리 또는 WQL을 이용한 쿼리를 참조하세요. 이 형식은 로캘과 독립적이지 않습니다. 연도, 월 및 일의 순서는 사용자 세션의 지역 및 언어 형식 설정에 따라 달라집니다. 예를 들어 미국 영어의 기본값은 "mm-dd-yyyy hh:mm:ss:mmm"이지만, 대부분의 다른 국가 또는 지역의 형식은 "yyyy-mm-dd hh:mm:ss:mmm"입니다.

다음 표에는 형식의 필드가 나와 있습니다.

필드 설명
yyyy 네 자리 연도입니다(0000~9999). 구현 시 지원되는 범위를 제한할 수 있습니다. 예를 들어 구현에서 1980~2099년까지만 지원할 수 있습니다.
MM 두 자리 월(01~12)입니다.
dd 월의 두 자리 날짜(01~31)입니다. 이 값은 해당 월에 적합해야 합니다. 예를 들어 2월 31일은 유효하지 않습니다. 그러나 구현 시 유효한 데이터를 반드시 확인하지는 않습니다.
HH 24시간 시계(00~23)를 사용하는 하루 중 시간(두 자리)입니다.
MM 시간의 두 자리 분(00~59)입니다.
SS 분의 두 자리 초(00~59)입니다.
mmmmmm 초의 6자리 마이크로초(000000~999999)입니다. 구현 시 반드시 이 필드를 사용하여 평가를 지원하지는 않습니다. 그러나 문자열의 고정 길이 특성을 유지하려면 이 필드가 항상 존재해야 합니다.
mmm 분의 세 자리 밀리초(000~999)입니다.
s UTC(협정 세계시)의 양수 또는 음수 오프셋을 나타내는 더하기 기호(+) 또는 빼기 기호(-)입니다.
UUU 원래 표준 시간대와 UTC의 차이(분)을 나타내는 세 자리 오프셋입니다. WMI의 경우 시간을 GMT(UTC 오프셋 0)로 변환하는 것이 좋지만 필수는 아닙니다.

형식에 적합한 선행 0을 사용하여, 모든 필드를 표시된 길이에 맞게 입력해야 합니다. 그러나 별표를 통해 사용하지 않는 필드를 나타내거나 별표를 와일드카드 값으로 사용할 수 있습니다. 쿼리의 WHERE 절을 제외한 모든 곳에서 별표(*)를 사용할 수 있습니다. 예를 들어 지정되지 않은 연도의 날짜 및 시간은 모든 연도에서 발생할 수 있습니다. 필드를 지정하지 않은 상태로 두려면 전체 필드를 별표로 바꿔야 합니다.

다음 예제에서는 별표의 올바른 사용과 잘못된 사용을 설명합니다.

  • 19980416******.000000+*** (합법)
  • 1998-04-16 ******:*** (불법)
  • 199*0416******.000000+*** (불법)
  • 199*-04-16 ******:*** (불법)

datetime을 사용하여 특정 시점을 나타내는 경우, 모든 관련 필드에 데이터가 포함되어야 합니다. 시간 범위를 나타내는 데 사용하는 경우에는 기간을 전달하는 데 필요한 필드에만 데이터가 포함되어야 합니다.

다음 예제에서는 일부 지정되지 않은 연도에 대한 상대적인 날짜이지만 측정 세부 정보 수준이 1일인 경우 여전히 정의된 지점인 "4월 1일"을 설명합니다.

  • ****0401******.000000+***
  • ****-04-01 ******:*** (불법)

UTC 오프셋 및 GMT 설정

다음 예제에서는 별표를 UUU 필드의 더하기 또는 빼기 기호 뒤에 배치하여 표준 시간대가 없는 시간을 정의하는 방법을 설명합니다.

  • 19980401135809.000000+***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09:*** (불법)

애플리케이션은 실행 중인 운영 체제 내 로컬 추상 크로노미터에 대한 영역이 지정되지 않은 날짜 및 시간 참조를 해석합니다. 예를 들어 일부 휴대용 컴퓨터의 내부 시계는 설정이 지리적 표준 시간대에 일치하거나 일치하지 않습니다. 현지 표준 시간대가 아닌 현재 추상 시간 원본의 표준 시간대를 대체하면 영역이 지정되지 않은 시간을 해석할 수 있습니다.

쿼리에 날짜 및 시간이 있는 UTC 오프셋의 의미는 주의해서 해석해야 합니다. 일반적으로 날짜와 시간이 동일한 UTC 오프셋을 사용하는 경우 두 날짜 및 시간 사이에는 같음, 보다 큼 및 보다 작음 비교가 적용됩니다. 다른 표준 시간대 오프셋으로 발생하는 날짜 및 시간을 처리할 때는 먼저 날짜와 시간을 GMT로 변환해야 합니다.

하나 이상의 하위 필드에 별표가 있는 상대적 날짜 및 시간을 포함하는 쿼리는 같음을 비교할 때만 WMI에 의미가 있습니다. 또한 WMI에서는 별표를 와일드카드로 사용할 수 없습니다. 대신 WMI는 상대적 날짜와 시간을 문자 단위로 비교합니다.

다음 예제에서는 WMI 쿼리에서 같다고 간주하지 않는 두 날짜를 설명합니다.

  • 19980401135809.000000+***
  • 19980401135809.000000+000

FILETIME 또는 VT_DATE 형식으로 변환

CIM DATETIME 형식은 WMI 내에서만 사용합니다. SWbemDateTime 스크립팅 개체의 메서드를 호출하면 WMI 형식과 FILETIME 또는 VT_DATE 형식을 변환할 수 있습니다. FILETIME 날짜/시간 구조는 32비트 Windows 운영 체제에서 사용하는 64비트 값입니다. VT_DATE 형식은 Visual Basic 및 ActiveX에서 사용하는 자동화 변형 날짜/시간 값입니다. 다음 표에는 전환 메서드가 나와 있습니다.

메서드 설명
SWbemDateTime.GetFileTime DATETIME 값을 FILETIME 형식으로 가져옵니다.
SWbemDateTime.GetVarDate DATETIME 값을 VT_DATE 형식으로 가져옵니다.
SWbemDateTime.SetFileTime FILETIME 날짜를 입력으로 사용하여 DATETIME 속성을 설정합니다.
SWbemDateTime.SetVarDate VT_DATE 날짜를 입력으로 사용하여 DATETIME 속성을 설정합니다.

날짜 및 시간 형식

WMI 정보

WMI 작업: 날짜 및 시간

간격 형식

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::Put

IWbemServices::PutClass