다음을 통해 공유


날짜 및 시간 특성의 동작 및 형식

 

게시 날짜: 2016년 11월

적용 대상: Dynamics CRM 2015

사용자와 사무실이 전세계에 있는 경우 여러 시간대의 날짜와 시간 값을 적절히 나타내는 것이 중요합니다.DateTimeAttributeMetadata 클래스는 CRM에서 유형 DateTime의 특성을 정의하고 관리하는 데 사용됩니다.DateTimeAttributeMetadata.DateTimeBehavior 속성을 사용하여 시간대 정보를 포함하거나 제외하고 날짜와 시간 값을 저장할지 여부를 정의하고 DateTimeAttributeMetadata.Format 속성을 사용하여 이러한 특성의 표시 형식을 지정합니다.

Dynamics 365의 사용자 지정을 사용하여 날짜와 시간 특성의 동작과 형식을 정의할 수도 있습니다.추가 정보:TechNet: 날짜 및 시간 필드의 동작 및 형식

참고

DateTimeAttributeMetadata.DateTimeBehavior 속성은 CRM Online를 사용 중이고 인스턴스를 Microsoft Dynamics CRM Online 2015 업데이트 1로 업데이트한 경우에만 사용할 수 있습니다. 또한 Microsoft Dynamics CRM Online 2015 업데이트 1의 모든 날짜와 시간 특성은 이제 1/1/1753 12:00 AM만큼 이른 값을 지원합니다.

CRM의 다른 버전의 경우 날짜와 시간 값의 동작을 정의할 수 없습니다. 기본적으로 날짜와 시간 값은 이 항목 뒷부분에서 설명하는 UserLocal 동작으로 저장됩니다.

이 항목의 내용

날짜 및 시간 특성의 동작 지정

날짜 및 시간 특성의 서식 지정

DateOnly 동작에서 지원되지 않는 날짜 및 시간 쿼리 연산자

날짜 및 시간 특성의 동작 변경

데이터베이스에 있는 기존 날짜 및 시간 값의 동작 변환

날짜 및 시간 특성의 동작 지정

DateTimeBehavior 클래스를 사용하여 DateTimeAttributeMetadata.DateTimeBehavior 속성에 대한 값을 지정할 수 있습니다.DateTimeBehavior 클래스에 다음 멤버가 들어 있습니다. 각 멤버는 멤버 이름과 동일한 값을 가진 문자열을 반환합니다.

멤버 이름 및 값

설명

UserLocal

  • 시스템에서 UTC 값으로 날짜와 시간 값을 저장합니다.

  • 검색 작업은 UTC 값을 반환합니다.

  • 업데이트 작업은 UTC 값을 현재 사용자의 시간대 값으로 변환한 다음 업데이트된 값을 저장하거나 업데이트를 위해 지정된 값의 종류(DateTimeKind)에 따라 동등한 UTC 값으로 저장합니다. 지정된 값이 UTC 종류인 경우 그대로 저장됩니다. 그렇지 않으면 UTC 동등 값이 저장됩니다.

  • 서식 있는 값을 검색하면 사용자 시간대 및 로캘 설정을 기반으로 UTC에서 사용자의 현재 시간대로 변환됩니다.

  • OData 끝점의 경우 특성은 DateTimeOffset로 노출됩니다.

  • 이 동작은 CreatedOnModifiedOn 같은 시스템 특성에 사용되며 변경할 수 없습니다. 시간대 정보와 함께 날짜 및 시간 값을 저장하려는 사용자 지정 특성에 대해 이 동작을 사용해야 합니다.

DateOnly

  • 시스템에 시간 값이 오전 12:00(00:00:00)인 실제 날짜 값을 저장합니다.

  • 검색 및 업데이트 작업의 경우 시간대 변환이 수행되지 않고 시간 값은 항상 오전 12시(00:00:00)입니다.

  • 서식 있는 값을 검색하면 시간대 변환 없이 날짜 값이 표시됩니다.

  • OData 끝점의 경우 특성은 DateTimeOffset로 노출됩니다.

  • 이 동작은 시간 정보가 필요하지 않은 생일과 기념일을 저장하는 사용자 지정 특성에 사용됩니다.

TimeZoneIndependent

  • 사용자 표준 시간대에 관계 없이 시스템에 실제 날짜 및 시간 값을 저장합니다.

  • 검색과 업데이트 작업의 경우 시간대 변환은 수행되지 않으며 사용자 시간대에 관계 없이 시스템에서 실제 날짜와 시간 값이 반환되고 업데이트됩니다.

  • 서식 있는 값을 검색하면 현재 사용자의 시간대와 로캘 설정에 지정된 서식을 기반으로 날짜와 시간 값(시간대 변환은 없음)이 표시됩니다.

  • OData 끝점의 경우 특성은 DateTimeOffset로 노출됩니다.

  • 이 동작은 호텔의 체크인 및 체크아웃 시간 같은 정보를 저장하는 특성에 사용해야 합니다.

다음 샘플 코드는 새로운 날짜 시간 특성에 대한 UserLocal 동작을 설정하는 방법을 보여줍니다.


// Create a date time attribute for the Account entity
// with the UserLocal behavior
dtAttribute = new DateTimeAttributeMetadata
{                             
    SchemaName = "new_SampleDateTimeAttribute",
    DisplayName = new Label("Sample Date Time Attribute", _languageCode),
    RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),                
    Description = new Label("Created by SDK Sample", _languageCode),                
    DateTimeBehavior = DateTimeBehavior.UserLocal,
    Format = DateTimeFormat.DateAndTime,
    ImeMode = ImeMode.Disabled
};

CreateAttributeRequest createAttributeRequest = new CreateAttributeRequest
{
    EntityName = Account.EntityLogicalName,
    Attribute = dtAttribute
};
_serviceProxy.Execute(createAttributeRequest);
Console.WriteLine("Created attribute '{0}' with UserLocal behavior\nfor the Account entity.\n", 
                            dtAttribute.SchemaName);

샘플 코드에서 문자열 값 DateTimeBehavior = "UserLocal"을 직접 지정하여 DateTimeBehavior 속성의 값을 설정할 수도 있습니다.

날짜 및 시간 특성을 만드는 동안 동작을 지정하지 않는 경우 특성은 기본적으로 UserLocal 동작을 사용하여 만들어집니다. 전체 샘플 코드를 보려면 샘플: 날짜 및 시간 동작 변환을 참조하십시오.

중요

  • 동작이 DateOnly 또는 TimeZoneIndependent로 설정된 날짜 및 시간 특성을 만들면 특성의 동작을 변경할 수 없습니다.추가 정보:날짜 및 시간 특성의 동작 변경

  • 동작이 DateOnly 또는 TimeZoneIndependent인 날짜 및 시간 특성은 오프라인 모드에서 Outlook용 Dynamics CRM 클라이언트의 이전 버전에서 편집했을 때 UserLocal 동작을 갖는 것처럼 처리됩니다. 그 이유는 클라이언트가 새로운 동작을 이해하지 못하며 UserLocal(Microsoft Dynamics CRM Online 2015 업데이트 1를 제외하고 CRM의 다른 버전의 기존 동작)와 다르게 취급하지 않기 때문입니다. 날짜 및 시간 특성은 업그레이드할 때 새로운 동작으로 변환되지 않으므로 여기에서 가장 좋은 방법은 사용자 지정자가 새로운 동작 중 하나를 채택하기 전에 최신 릴리스로 모든 Outlook용 Dynamics CRM 클라이언트를 업데이트하는 것입니다. 온라인일 때 새로운 동작으로 필드의 데이터를 편집하면 제대로 작동합니다.

    오래된 Outlook용 Dynamics CRM 클라이언트는 1/1/1900(Microsoft Dynamics CRM Online 2015 업데이트 1을 제외하고 CRM의 이전 버전에서 지원되는 날짜 및 시간 유형의 가장 빠른 값) 이전 날짜를 인식하지 못합니다. 사용자가 오프라인일 때 날짜가 1/1/1900 이전인 레코드는 열 수 없습니다. 그러나 온라인이 되면 모두 잘 작동합니다. 오프라인 모드에서도 1/1/1753 12:00 AM 만큼 이른 날짜를 가진 특성이 작동하려면 Outlook용 Dynamics CRM 클라이언트의 최신 버전으로 업그레이드해야 합니다.

  • 사용자 지정 코드를 사용하여 CRM 인스턴스에서 날짜 시간 동작을 구현하는 경우 새로운 동작 기능 때문에 Microsoft Dynamics CRM Online 2015 업데이트 1에서 예상대로 작동하지 않을 수 있습니다.

날짜 및 시간 특성의 서식 지정

DateTimeAttributeMetadata.Format 속성을 사용하여 시스템에 저장되는 방식에 관계 없이 특성의 날짜/시간 표시 형식을 지정합니다.DateTimeFormat 열거를 사용하여 DateAndTime 또는 DateOnly의 표시 형식을 지정할 수 있습니다.

DateTimeBehavior 속성이 DateOnly로 설정된 경우 Format 속성의 값을 DateAndTime으로 설정하거나 변경할 수 없습니다.

DateOnly 동작에서 지원되지 않는 날짜 및 시간 쿼리 연산자

시간 관련 쿼리 연산자는 DateOnly 동작에서 지원되지 않습니다. 이곳에 나열된 시간별 쿼리 연산자 이외에 다른 모든 쿼리 연산자는 지원됩니다.

  • X분 이상 경과

  • X시간 이상 경과

  • 지난 X시간

  • 다음 X시간

추가 정보:FetchXML의 회계 날짜 및 "older than" 날짜/시간 쿼리 연산자

날짜 및 시간 특성의 동작 변경

CRM 인스턴스에서 시스템 사용자 지정자 역할을 갖고 있고 날짜 및 시간 특성에 대한 CanChangeDateTimeBehavior 관리 속성이 True로 설정된 경우 날짜 및 시간 특성을 업데이트하여 동작을 변경할 수 있습니다.

경고

날짜 및 시간 특성의 동작을 변경하기 전에 비즈니스 규칙, 워크플로 및 계산 또는 롤업 특성 같은 특성의 모든 종속성을 검토하여 동작 변경 결과로 문제가 발생하지 않도록 해야 합니다. 시스템 사용자 지정자는 CanChangeDateTimeBehavior 관리 속성을 사용하여 기존 날짜 및 시간 특성의 동작 수정을 제한할 수 있습니다.

최소한 날짜 및 시간 특성의 동작을 변경한 후에는 변경된 날짜 및 시간 특성에 종속되는 각 비즈니스 규칙, 워크플로, 계산 특성 및 롤업 특성 레코드를 열고 정보를 검토하고 레코드를 저장하여 최신 특성 동작 및 값을 사용할 수 있도록 해야 합니다.

계산 또는 롤업 특성의 날짜 및 시간 동작을 변경한 후 계산 또는 롤업 필드 정의 편집기를 열고 필드 정의를 저장하여 동작을 변경한 후에도 특성이 유효한지 확인합니다. 시스템 사용자 지정자는 CRM에서 사용자 지정 영역의 필드 유형 옆에 있는 편집을 클릭하여 계산 또는 롤업 특성을 위한 필드 정의 편집기를 열 수 있습니다.추가 정보:계산된 필드 정의롤업 필드 정의

  • 기본 제공 및 사용자 지정 엔터티에 대한 CreatedOnModifiedOn 특성의 동작은 기본적으로 UserLocal로 설정되며 CanChangeDateTimeBehavior 관리 속성은 False로 설정되어 이러한 특성의 동작을 변경할 수 없음을 암시합니다. 사용자가 사용자 지정 엔터티에 대해 이러한 특성의 CanChangeDateTimeBehavior 관리 속성 값을 변경할 수 있지만 특성의 동작은 변경할 수 없습니다.

  • 새로운 사용자 지정 날짜 및 시간 특성의 경우 CanChangeDateTimeBehavior 관리 속성은 True로 설정됩니다. 이는 사용자 지정 날짜 및 시간 특성의 동작을 UserLocal에서 DateOnly 또는 TimeZoneIndependent로 변경할 수 있음을 의미하며 다른 동작 전환은 허용되지 않습니다.

    Microsoft Dynamics CRM Online 2015 업데이트 1로 업그레이드된 CRM 조직의 일부인 사용자 지정 날짜 및 시간 특성의 경우 특성 또는 상위 엔터티를 사용자 지정할 수 있는 한 CanChangeDateTimeBehavior 관리 속성은 True로 설정됩니다.

    참고

    UserLocal에서 DateOnly로 특성의 DateTimeBehavior 속성을 업데이트할 때 Format 속성도 DateAndTime에서 DateOnly로 변경해야 합니다. 그렇지 않으면 예외가 발생합니다.

  • Microsoft Dynamics CRM Online 2015 업데이트 1의 다음 기본 제공 날짜 및 시간 특성은 기본적으로 DateOnly로 설정되고 CanChangeDateTimeBehavior 관리 속성은 이러한 특성의 False로 설정되어 이러한 특성의 동작을 변경할 수 없음을 암시합니다.

    날짜 및 시간 특성

    상위 엔터티

    anniversary

    Contact

    birthdate

    Contact

    duedate

    Invoice

    estimatedclosedate

    Lead

    actualclosedate

    Opportunity

    estimatedclosedate

    Opportunity

    finaldecisiondate

    Opportunity

    validfromdate

    Product

    validtodate

    Product

    closedon

    Quote

    expireson

    Quote

    그러나 이러한 기본 제공 날짜 및 시간 특성이 Microsoft Dynamics CRM Online 2015 업데이트 1로 업그레이드된 조직에 속하는 경우 이러한 특성은 UserLocal로 설정되고 CanChangeDateTimeBehavior 관리 속성은 업그레이드된 조직의 True로 설정되며 이러한 특성의 동작은 DateOnly로만 변경할 수 있습니다. 다른 동작 전환은 허용되지 않습니다.

특성의 동작을 업데이트한 후 변경 내용을 적용하려면 사용자 지정을 게시해야 합니다. 날짜 및 시간 특성의 동작을 업데이트하면 특정 동작이 변경된 입력/업데이트한 모든 값이 새로운 동작에 따라 시스템에 저장됩니다. 데이터베이스에 이미 저장된 값에는 영향이 없으며 UTC 값으로 계속 저장됩니다. 그러나 SDK를 사용하여 기존 값을 검색하거나 UI에서 보면 기존 값은 특성의 새 동작에 따라 표시됩니다. 예를 들어, UserLocal에서 DateOnly로 계정 엔터티에 대한 사용자 지정 특성의 동작을 변경했고 SDK를 사용하여 기존 계정 레코드를 검색하는 경우 날짜와 시간은 <Date>로 표시되고, 이어서 시간은 12 AM(00:00:00)으로 표시됩니다. 마찬가지로 UserLocal에서 TimeZoneIndependent로 동작을 변경하는 경우 데이터베이스에서 실제 값은 시간대 변환 없이 있는 그대로 표시됩니다.

다음 샘플 코드는 날짜 및 시간 특성의 동작을 업데이트하는 방법을 보여줍니다.


// Retrieve the attribute to update its behavior and format
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
    EntityLogicalName = Account.EntityLogicalName,
    LogicalName = "new_sampledatetimeattribute",
    RetrieveAsIfPublished = false
};
// Execute the request
RetrieveAttributeResponse attributeResponse =
                (RetrieveAttributeResponse)_serviceProxy.Execute(attributeRequest);

Console.WriteLine("Retrieved the attribute '{0}'.",
                attributeResponse.AttributeMetadata.SchemaName);

// Modify the values of the retrieved attribute
DateTimeAttributeMetadata retrievedAttributeMetadata =
                (DateTimeAttributeMetadata)attributeResponse.AttributeMetadata;
retrievedAttributeMetadata.DateTimeBehavior = DateTimeBehavior.DateOnly;
retrievedAttributeMetadata.Format = DateTimeFormat.DateOnly;

// Update the attribute with the modified value
UpdateAttributeRequest updateRequest = new UpdateAttributeRequest
{
    Attribute = retrievedAttributeMetadata,
    EntityName = Account.EntityLogicalName,
    MergeLabels = false
};
_serviceProxy.Execute(updateRequest);
Console.WriteLine("Updated the behavior and format of '{0}' to DateOnly.",
    retrievedAttributeMetadata.SchemaName);

// Publish customizations to the account entity
PublishXmlRequest pxReq = new PublishXmlRequest
{
    ParameterXml = String.Format("<importexportxml><entities><entity>account</entity></entities></importexportxml>")
};
_serviceProxy.Execute(pxReq);
Console.WriteLine("Published customizations to the Account entity.\n");

전체 샘플 코드를 보려면 샘플: 날짜 및 시간 동작 변환을 참조하십시오.

데이터베이스에 있는 기존 날짜 및 시간 값의 동작 변환

UserLocal에서 DateOnly 또는 TimeZoneIndependent로 동작을 변경하기 위해 날짜 및 시간 특성을 업데이트하면 데이터베이스에 있는 기존 특성 값이 자동으로 변환되지 않습니다. 동작 변경은 동작이 변경된 특성에 입력되거나 업데이트되는 값에만 영향을 미칩니다. 시스템의 기존 날짜 및 시간 값은 계속 UTC로 유지되고 이전 섹션에서 설명한 대로 SDK를 통하거나 UI에서 검색할 때 새 동작에 따라 CRM에 의해 표시됩니다. 동작이 UserLocal에서 DateOnly로 변경되는 특성의 경우 데이터베이스에서 기존 UTC 값을 적절한 DateOnly 값으로 변환하면 ConvertDateAndTimeBehaviorRequest 메시지를 사용한 데이터 이상을 방지할 수 있습니다.

메시지를 사용하면 UTC에서 DateOnly로 값을 변환하는 데 사용할 시간대를 선택하기 위한 변환 규칙(ConversionRule)을 지정할 수 있습니다. 다음 변환 규칙 중 하나를 지정할 수 있습니다.

  • SpecificTimeZone: 지정된 CRM 시간대 코드에 따라 UTC 값을 DateOnly 값으로 변환합니다. 이 경우 TimeZoneCode 매개 변수에 대한 값도 지정해야 합니다.

  • CreatedByTimeZone: 레코드를 만든 사용자가 UI에서 볼 수 있는 DateOnly 값으로 UTC 값을 변환합니다.

  • OwnerTimeZone: 레코드를 소유한 사용자가 UI에서 볼 수 있는 DateOnly 값으로 UTC 값을 변환합니다.

  • LastUpdatedByTimeZone: 레코드를 최종 업데이트한 사용자가 UI에서 볼 수 있는 DateOnly 값으로 UTC 값을 변환합니다.

DateTimeBehaviorConversionRule 클래스의 4개 구성원 중 하나를 사용하여 ConversionRule 매개 변수에 대한 유효한 값을 지정할 수 있습니다.

참고

  • ConvertDateAndTimeBehaviorRequest메시지는 CRM Online를 사용 중이고 인스턴스를 Microsoft Dynamics CRM Online 2015 업데이트 1로 업데이트한 경우에만 사용할 수 있습니다..Microsoft Dynamics CRM(온-프레미스)에는 사용할 수 없습니다.

  • ConvertDateAndTimeBehaviorRequest 메시지를 실행하려면 CRM 인스턴스에서 시스템 관리자 역할이 있어야 합니다.

ConvertDateAndTimeBehaviorRequest 메시지를 실행하면 변환 요청을 실행하기 위한 시스템 작업(비동기 작업)이 만들어집니다. 메시지 응답의 ConvertDateAndTimeBehaviorResponse.JobId 특성은 변환 요청의 결과로 만들어진 시스템 작업의 ID를 표시합니다. 시스템 작업이 완료된 후 작업 세부 정보(AsyncOperation.Message)를 확인하여 변환 세부 정보 또는 오류(있는 경우)를 볼 수 있습니다.

참고

여러 특성의 변환을 단일 변환 작업으로 그룹화하고 한 번에 한 변환 작업을 실행하여 변환에 충돌이 발생하지 않도록 하고 시스템 성능을 최적화하는 것이 좋습니다.

ConvertDateAndTimeBehaviorRequest 메시지를 사용하는 동안 고려해야 하는 몇 가지 중요한 사항:

  • 솔루션 가져오기 또는 특성이나 상위 엔터티 삭제 같이 메시지를 실행하는 동안 Dynamics 365에서 솔루션에 주요 변경이 발생하지 않도록 해야 합니다. 이렇게 하면 예기치 않은 동작을 초래할 수 있지만 데이터는 손실되지 않습니다.

  • 시스템에서 메시지를 실행한 결과로 수행된 업데이트는 워크플로 및 플러그인을 실행하지 못합니다.

  • 시스템에서 메시지를 실행한 결과로 수행된 업데이트는 특성에 대해 “마지막으로 수정한 날짜” 값을 변경하지 않지만 관리자가 특성에 대한 변환 시간과 원본/변경된 값을 확인할 수 있도록 감사됩니다.

다음 샘플 코드에서는 메시지를 사용하는 방법을 보여 줍니다.


ConvertDateAndTimeBehaviorRequest request = new ConvertDateAndTimeBehaviorRequest()
{
    Attributes = new EntityAttributeCollection() 
            { 
                new KeyValuePair<string, StringCollection>("account", new StringCollection() 
                { "new_sampledatetimeattribute" }) 
            },
    ConversionRule = DateTimeBehaviorConversionRule.SpecificTimeZone.Value,
    TimeZoneCode = 190, // Time zone code for India Standard Time (IST) in CRM
    AutoConvert = false // Conversion must be done using ConversionRule
};

// Execute the request
ConvertDateAndTimeBehaviorResponse response = (ConvertDateAndTimeBehaviorResponse)_serviceProxy.Execute(request);

전체 샘플 코드를 보려면 샘플: 날짜 및 시간 동작 변환을 참조하십시오.

참고 항목

샘플: 날짜 및 시간 동작 변환
TechNet: 날짜 및 시간 필드의 동작 및 형식
Customize 특성 메타데이터 메시지

© 2017 Microsoft. All rights reserved. 저작권 정보