Skip to content

Date Format

Cals platz의 Date Format은 초기 설치 시 N/A로 설정되고, 이 때 동작하는 형식은 yyyy-MM-dd 기본 형식으로 DB Column type이 DATE, DATETIME의 경우 설정된 DB Type(My SQL)의 입력 형식 허용 기준으로 저장된다.

Locale의 Date Format은 테넌트 기준으로 시스템의 기본 날짜 형식을 변경하는 기능으로 날짜연관 필드의 Cals Application Web, Mobile, Open API의 조회 및 저장 로직이 변경된다.

Date Format 변경방법

App 환경에서는 Application Setting > Locale 메뉴에서 변경 가능하며, Provisioning의 경우 모든 Tenant에 초기 적용된다. 초기 적용 이후 Tenant Setting 내의 Locale에서 변경 후 Deploy, Publish하여 테넌트 별 세팅이 가능하다.


[그림1 Locale 메뉴 내 Date Format 설정 위치]

  1. Locale을 선택하면 선택한 Locale에 적합한 Date Format이 지정된다.
  2. 지정된 Date Format을 변경 할 수 있다.
  3. N/A: Date Format 적용을 하지 않고자 하는 경우 사용한다.

Date Format 적용 로직

25'2월 Venus Project의 버전 전에는 Date Format 변환 로직은 없었기 때문에 데이터 형식이 맞지 않은 데이터가 등록되어 있거나 등록 할 때 규칙이 적합하지 않아 저장되지 않는 현상은 발생되지 않았다. 따라서 Locale > Date Format을 설정한 뒤 이전 데이터 조회 및 저장 정상적으로 동작하는 component에서 “[Error Code 501006] Config에 오류가 존재합니다.” 와 같은 오류가 발견된다면, Date Format을 설정하지 않으면 발생하지 않는다.

  • Data Format 설정하지 않는 방법: Locale > Date Format을 N/A로 설정.

Locale의 Date Format은 기본적으로 BO로 구동되는 Core 프로그램(Lamdba)에 적용되어 web, Mobile 화면 및 Open API의 데이터 조회에 영향을 준다.

Table FieldBO Field가능여부가능 여부 설명
DATEDateY권장
DateTime
UTCDateTime
N조회는 가능하나 저장 시 에러 발생
StringN조회의 경우 Locale 형태로 변환되지 않고, 저장시 0000-00-00 형태로 저장됨.
`DATETIME`DateTime
UTCDateTime
Y권장
DateYDatePicker를 지정하여 사용권고
(Date 형식에 맞게 값 입력해서 사용 필요, 만약 시간 형식이 포함될 경우 에러 발생)
StringYDatePicker를 지정하여 사용권고
(Date 형식에 맞게 값 입력해서 사용 필요, 만약 시간 형식이 포함될 경우 에러 발생)
VARCHARDate
DateTime
UTCDateTime
Y저장 때 변환 로직으로 변환하지 않고 입력 값으로 저장함.
BO Field의 유형을 Date로 지정할 경우 DatePicker를, DateTime, UTCDateTime으로 지정할 경우 DateTimePicker를 사용. Text control로 사용시 화면에 표시되는 형태가 DB에 저장되는 형태로 보여 Locale 형태에 맞지 않음.

데이터 조회 로직

List Component 또는 Form Component 등 화면에서 날짜 관련 데이터를 조회할 때 적용되는 로직으로 조회 결과 값을 구성하는데 사용된다.

변환 규칙

  1. Table Column이 DATE, DATETIME 이며 BO Field가 Date, Datetime, UTCDateTime 인 경우 변환됨.

    WARNING

    VARCHAR 나 CHAR 형태 등 Table Column의 유형이 날짜 관련 형태가 아닌 경우 Date Format 로직으로 변환되지 않음

  2. 조회 데이터 형식은 BO Field 기준으로 데이터 형태를 구성함.
  3. 변환 순위: 1순위는 Display Format. 2순위는 Locale Date Format

Case1) Locale: dd/MM/yyyy, Display Format: N/A

Locale만 등록된 경우로 Locale의 Format으로 변환됨.

Table ColumnBO Field변환로직DB 저장값화면 조회결과
Locale(dd/MM/yyyy)형태로 조회됨.
VarcharStringN/A2025-02-01-
DateStringN/A2025-02-01-
DateTimeStringN/A2025-02-01 00:00:00-
VarcharDateN/A2025-02-01-
DateDate변환대상2025-02-0101/02/2025
DateTimeDate변환대상2025-02-01 00:00:0001/02/2025
VarcharDateTimeN/A2025-02-01 00:00:00-
DateDateTime변환대상2025-02-0101/02/2025 00:00:00
DateTimeDateTime변환대상2025-02-01 00:00:0001/02/2025 00:00:00

Case2) Locale : N/A, Display Format : dd-MM-yyyy

각 Control에 Display Format만 등록된 경우로 Display Format 기준으로 변환됨

Table ColumnBO Field변환로직DB 저장값

화면 조회결과

Display Format: dd-MM-yyyy 형태로 조회됨.

VarcharStringN/A2025-02-01
DateStringN/A2025-02-01
DateTimeStringN/A2025-02-01 00:00:00
VarcharDateN/A2025-02-01
DateDate변환대상2025-02-0101-02-2025
DateTimeDate변환대상2025-02-01 00:00:0001-02-2025
VarcharDateTimeN/A2025-02-01 00:00:00
DateDateTime변환대상2025-02-0101-02-2025 00:00:00
DateTimeDateTime변환대상2025-02-01 00:00:0001-02-2025 00:00:00

Case3) Locale : dd/MM/yyyy, Display Format : dd-MM-yyyy

Locale과 Display Format이 모두 등록된 경우 Display Format 우선으로 변환됨

Table ColumnBO Field변환로직DB 저장값화면 조회결과
VarcharStringN/A2025-02-01
DateStringN/A2025-02-01
DateTimeStringN/A2025-02-01 00:00:00
VarcharDateN/A2025-02-01
DateDate변환대상2025-02-0101-02-2025
DateTimeDate변환대상2025-02-01 00:00:0001-02-2025
VarcharDateTimeN/A2025-02-01 00:00:00
DateDateTime변환대상2025-02-0101-02-2025 00:00:00
DateTimeDateTime변환대상2025-02-01 00:00:0001-02-2025 00:00:00

데이터 저장 로직

변환 규칙

  1. Table Column Date, DateTime인 경우 변환 로직을 적용하여 BO Field가 적합하지 않은 경우 데이터가 저장되지 않거나 에러가 발생될 수 있음.
  2. 변환 순위: 1순위는 Data Format. 2순위는 Locale Date Format

    WARNING

    화면 입력 값이 적합하지 않은 경우 저장되지 않음

Case1) Locale : N/A

Date Format이 지정되어 있지 않은 경우로 My SQL 기본 날짜 형식 yyyy-MM-dd형태로 변환하여 저장함.

Table Column화면 입력 값DB 저장 값설명
Varchar2025-01/012025-01/01
Date2025-01-012025-01-01
Date2025-01/012025-01-01않음
Date202501012025-01-01
DateTime2025-01-01 00:00:002025-01-01 00:00:00
DateTime2025-01-012025-01-01 00:00:00
DateTime2025-01/01 00:00:002025-01-01 00:00:00
DateTime20250101 00:00:002025-01-01 00:00:00

Case2) Locale : dd-MM-yyyy

Locale 포맷을 체크하여 입력된 값 형식에 따라 저장

Table Column화면 입력 값DB 저장 값
Varchar01/01-20252025-01/01변환 로직 없이 입력 값으로 저장됨
Date01-01-20252025-01-01형식에 적합하여 입력 값 저장됨
Date01/01-2025Locale 포멧에 적합하지 않아 에러
Date01012025Locale 포멧에 적합하지 않아 에러
DateTime01-01-2025 00:00:002025-01-01 00:00:00
DateTime01-01-20252025-01-01 00:00:00
DateTime

01/01-2025

00:00:00

Locale 포멧에 적합하지 않아 에러
DateTime

01012025

00:00:00

Locale 포멧에 적합하지 않아 에러

DB에 적재되는 데이터 중 DATE, DATETIME 컬럼의 데이터는 모두 Data Format, Locale DateFormat 설정 여부와 무관하게 yyyy-MM-dd 형식으로 저장된다.

DB에 적재되는 데이터 중 VARCHAR, CHAR 컬럼과 같은 TEXT 컬럼은 데이터는 사용자가 설정한 Data Format 또는 Locale DateFormat 형식으로 저장된다.

Date Format 적용 유의사항

  1. Date Format을 N/A에서 변경하면 추가적인 변환 로직이 적용되어 Table Column 유형과 BO Field 유형에 맞지 않은 경우 동작하지 않으므로, 기존 N/A로 Configuration 되어 있던 테넌트의 셋팅을 변경하게 되는 경우 모든 화면의 조회, 저장 기능 체크를 해야 한다.
  2. DB에 저장된 데이터가 변환할 수 없는 값으로 입력된 경우 조회 시 변환 에러로 데이터가 출력되지 않을 수 있다. 따라서 배포 된 후 조회 에러가 발생된 경우 DB에 적재된 데이터 확인이 필요하다.
  3. BO Field Calculation 의 경우 Date Format 적용이 되지 않는다. 따라서 Locale이 설정되어 01/01/2025로 표시되는 필드를 LEFT([DATE],4)로 지정하면 '2025'로 표시된다.
  4. Locale Date Format을 설정하더라도 모바일 앱에서는 적용되지 않는다
  5. 기존 Data Format 또는 Locale DateFormat을 변경한 뒤 Deploy할 경우, 기존 메타데이터를 사용하고 있는 사용자는 저장/조회에서 에러가 발생할 수 있으므로 새로운 메타데이터를 받아오기 위해 재로그인이 필요하다.
  6. Component, Control Interface Action 사용시 주의사항: Source BO Field(String) -> Target BO Field(Date, DateTime)인 경우 지정된 Date Format에 적합하거나 기본형태(yyyy-MM-dd 또는 yyyy-MM-dd HH:mm:ss)로 값을 전달해야 한다.
  7. 날짜 포맷 변경 로직은 Business Object Field의 Type 기준으로 Server Side에서 적용됨으로 3rd party 어플리케이션(java 등)에서 BO Config 관련 Cals Lambda나 API로 데이터를 접근하는 경우 요청 전문과 응답 전문을 설정한 Locale Date Format 값으로 변경하여 요청해야 한다.