세일즈포스(Salesforce, SFDC) 이야기/관리자(Admin)을 위해...

자주 쓰는 함수와 연산자들 - (1) 날짜 및 시간 관련 함수들

sfdc-exp 2025. 3. 10. 17:45

세일즈포스의 함수와 연산자는 아래와 같은 경우에 주로 사용된다. 

 

  • 수식 필드
  • 확인 규칙 (필드에 입력된 값의 체크)
  • 보고서의 수식
  • 플로(Flow) 를 만들때

 

그외의 경우도 있겠지만 함수의 이름과 기능은 대부분의 사용자가 익숙한 엑셀의 함수와 유사하기 때문에 엑셀의 수식을 만드는데 익숙한 사용자들이라면 크게 문제가 없겠지만 세부적인 사용법에 있어 조금씩의 차이가 있을 수 있다.전체 함수와 연산자는 아래의 페이지에서 확인이 가능하다. 하지만, 모든 함수를 다 암기할 필요는 없으며, 자주 사용하는 함수를 알아두는 것이 유용하므로 아래에서 설명하는 함수들을 눈여겨 보기 바란다. 함수에 대한 설명은 초보자 대상 보다는 수식을 어느 정도 작성해 본 사용자들을 대상으로 하고 있다. 예를 들면, 내가 작성해야 하는 수식에 INCLUDESCONTAINS 중에 어떤 것을 쓰는 것이 좋은지, CASE 함수를 사용하는 것이 적당한지 아니면 여러개의 중접된 IF 함수를 사용하는 것이 적당한지에 대한 내용이라보 보면 된다.  

 

https://help.salesforce.com/s/articleView?id=platform.customize_functions.htm&type=5

 

수식을 작성함에 있어 가장 빈번하게 사용되는 날짜 및 시간 관련 함수부터 알아보기로 하자.

 

◈ 날짜 및 시간 관련 함수들

DATE() : DATE ( 년, 월, 일 )

DATE() 함수는 인수로 주어진 숫자를 날짜형의 데이터로 변환 시킨다. 예를 들면, DATE(2025, 3, 10) 의 결과값은 2025/03/10 또는 2025년 3월 10일이 된다.

 

 DATEVALUE( 날짜 형식의 문자열, 날짜 또는 날짜/시간 필드명 )

DATEVALUE() 함수는 위에서 설명한 DATE() 함수와 많이 혼동이 되는 함수다. 이 함수는 문자열이나 필드명으로 전달된 인수를 날짜형식으로 변환한다.

  • 문자열을 변환하는 경우: DATEVALUE( “2025-03-10” ) 의 결과값은 날짜값인 “2025. 03. 10.” 이 된다. 함수의 괄호안의 값이 겹따옴표로 둘러싼것은 텍스트 형식, 즉 문자열임을 의미한다.
  • 필드값을 변환하는 경우: DATEVALUE( OrderDeliveryDateTime__c ). 날짜/시간 형식인 OrderDeliveryDateTime__c 필드값에 입력된 값을 날짜로 변환한다. 이처럼 필드명인 경우 따옴표를 붙이지 않는다. 시간값은 무시된다.

이 함수의 괄호안의 파라미터로 전달되는 값은 반드시 날짜 또는 날짜 및 시간 형식이어야 한다.

 

 TIMEVALUE( 시간 형식의 문자열, 날짜/시간 또는 시간 필드명 )

위의  DATEVALUE() 함수와 유사하게 괄호안에 전달된 문자열 또는 필드값의 시간값을 반환한다.

  • 문자열을 변환하는 경우: TIMEVALUE( “14:20:00.000” ) 의 결과값은 날짜값인 “오후 2시” 가 된다. 물론 필드에 저장되는값은  “14:20:00.000” 이 된다. 괄호 안의 파라미터를  겹따옴표로 둘러싼것은 텍스트 형식, 즉 문자열임을 의미한다.
  • 필드값을 변환하는 경우: TIMEVALUE( OrderDeliveryDateTime__c ). 날짜/시간 형식인 OrderDeliveryDateTime__c 필드값에 입력된 값에서 시간값을 분리하여 반환한다. 이처럼 필드명인 경우 따옴표를 붙이지 않는다.

파라미터로 전달된 값은 날짜/시간 또는 시간 필드 또는 그와 같은 형식의 문자열이어야 한다.

 

 DATETIMEVALUE( 날짜, 날짜/시간 형식의 문자열, 날짜 또는 날짜/시간 필드명 )

DATETIMEVALUE() 함수는 위의  DATEVALUE() 함수와 TIMEVALUE() 함수의 조합이라고 보면 된다. 즉 괄호안에 전달된 문자열 또는 필드값의 날짜값과 시간값을 반환한다.

  • 문자열을 변환하는 경우: DATETIMEVALUE ( “2025-03-10 14:00:00.000” ) 의 결과값은 날짜값인 “2025년 3월 10일 오후 2시” 가 된다. 필드에 저장되는 값은  “2025. 3. 10. 14:20:00.000” 이 된다. 괄호 안의 파라미터를  겹따옴표로 둘러싼것은 텍스트 형식, 즉 문자열임을 의미한다.
  • 필드값을 변환하는 경우: DATETIMEVALUE ( OrderDeliveryDateTime__c ). 날짜/시간 형식인 OrderDeliveryDateTime__c 필드값에 입력된 값에서 날짜와 시간값을 반환한다. 이처럼 필드명인 경우 따옴표를 붙이지 않는다.

파라미터로 전달된 값은 날짜 또는 날짜/시간 또는 그와 같은 형식의 문자열이어야 한다. 만일 날짜값만 전달하면 “2025.3.10. 00:00:00.000” 으로 시간은 00:00:00.000” 즉 0시라는 값이 반환된다.

 

DAY( 날짜 )

파라미터의 날짜값에서 날짜에 해당하는 숫자를 리턴한다. 즉 반환값은 1 에서 31 사이의 숫자가 된다.

  • DATE( DATE(2025, 3, 10) ) 의 결과값은 10이 된다.
  • DAY ( OrderDeliveryDate__c ) 의 결과값은 전달된 필드의 날짜값이 된다.

이 함수의 파라미터는 날짜 형식만 허용된다. 예를 들면 파라미터로 전달할 필드의 데이터 유형이 날짜/시간인 경우, 먼저 값을 DATEVALUE() 함수를 사용하여 날짜 형식으로 변환 후 파라미터로 전달해야 한다. 예를 들어 OrderDeliveryDateTime__c 필드의 데이터 유형이 날짜/시간이라면 아래와 같이 작성해야 한다;

  • DAY ( DATEVALUE( OrderDeliveryDateTime__c ) )

 

MONTH( 날짜 )

파라미터의 날짜값에서 월에 해당하는 숫자를 리턴한다. 즉 반환값은 1 에서 12 사이의 숫자가 된다.

  • MONTH ( DATE(2025, 3, 10) ) 의 결과값은 3이 된다.
  • MONTH ( OrderDeliveryDate__c ) 의 결과값은 전달된 필드의 이 된다.

이 함수의 파라미터도 날짜 형식만 허용된다. 예를 들면 파라미터로 전달할 필드의 데이터 유형이 날짜/시간인 경우, 먼저 값을 DATEVALUE() 함수를 사용하여 날짜 형식으로 변환 후 파라미터로 전달해야 한다. 예를 들어 OrderDeliveryDateTime__c 필드의 데이터 유형이 날짜/시간이라면 아래와 같이 작성해야 한다;

  • MONTH ( DATEVALUE( OrderDeliveryDateTime__c ) )



YEAR( 날짜 )

파라미터의 날짜값에서 년도에 해당하는 숫자를 리턴한다. 즉 반환값은 4자리의 숫자가 된다.

  • YEAR ( DATE(2025, 3, 10) ) 의 결과값은 2025가 된다.
  • YEAR ( OrderDeliveryDate__c ) 의 결과값은 전달된 필드의 년도가 된다.

이 함수의 파라미터도 날짜 형식만 허용된다. 예를 들면 파라미터로 전달할 필드의 데이터 유형이 날짜/시간인 경우, 먼저 값을 DATEVALUE() 함수를 사용하여 날짜 형식으로 변환 후 파라미터로 전달해야 한다. 예를 들어 OrderDeliveryDateTime__c 필드의 데이터 유형이 날짜/시간이라면 아래와 같이 작성해야 한다;

  • YEAR ( DATEVALUE( OrderDeliveryDateTime__c ) )

 

HOUR( 시간형식의 데이터 )

파라미터의 시간값에서 시간에 해당하는 숫자를 리턴한다. 즉 반환값은 1에서 24 사이의 숫자가 된다. HOUR(), MINUTE(), SECOND() 함수의 파라미터는 반드시 시간형식의 데이터이어야 한다. 따라서 위에서 설명한 TIMEVALUE() 함수를 사용하여 주어진 파라미터가 날짜/시간인 경우 변환을 한 이후 HOUR() 함수를 사용하여야 한다. 그렇지 않고, 아래와 같이 작성하면 에러가 난다.

  • HOUR ( “14:20:00.000” ) : 파라미터의 데이터가 텍스트이므로 에러.
  • HOUR ( 14:20:00.000 ) : 전달된 파라미터를 시간형식으로 인식하지 않으므로 에러.

위의 표현은 아래와 같이 작성해야 에러없이 작동하며, 결과는 14라는 숫자가 된다;

  • HOUR ( TIMEVALUE( “14:20:00.000”) )

파라미터가 필드인 경우 필드의 데이터 유형이 날짜/시간이라면 아래와 같이 작성하야 한다.;

  • HOUR ( TIMEVALUE( OrderDeliveryDateTime__c ) )

 

MINUTE( 시간형식의 데이터 )

파라미터의 시간값에서 에 해당하는 숫자를 리턴한다. 즉 반환값은 0에서 59 사이의 숫자가 된다. HOUR() 함수와 유사하게 파라미터는 반드시 시간형식의 데이터이어야 하므로, 위에서 설명한 TIMEVALUE() 함수를 사용하여 변환을 한 이후 MINUTE() 함수를 사용하여야 한다. 

  • MINUTE ( TIMEVALUE( "14:20:45.125" ) ) : 결과값은 20이 된다.
  • MINUTE (TIMEVALUE( OrderDeliveryDateTime__c )) : 결과값은 필드에 입력된 시간의 값에 해당하는 숫자가 된다.

 

SECOND ( 시간형식의 데이터 )

파라미터의 시간값에서 에 해당하는 숫자를 리턴한다. 즉 반환값은 0에서 59 사이의 숫자가 된다. HOUR() 함수와 유사하게 파라미터는 반드시 시간형식의 데이터이어야 하므로, 위에서 설명한 TIMEVALUE() 함수를 사용하여 변환을 한 이후 SECOND() 함수를 사용하여야 한다. 

  • SECOND ( TIMEVALUE( "14:20:45.125" ) ) : 결과값은 45 가 된다.
  • SECOND ( TIMEVALUE( OrderDeliveryDateTime__c )) : 결과값은 필드에 입력된 시간의 에 해당하는 숫자가 된다.

 

NOW()

이 함수는 아래의 TODAY() 와 함께 자주 사용되는 함수다. 별도의 파라미터가 필요 없으며 함수의 결과값은 현재 사용자에게 지정되어 있는 시간대로 실행 시점의 날짜와 시간이 날짜/시간 형식으로 리턴된다. 이 함수에 대한 연산도 가능하다. 예를 들어, 현재가 2025-03-10, 오후 4시 30분이라고 가정할 때 “NOW() + 3”“2025. 3. 13. 16:30:00.000” 이 된다.

 

TODAY()

TODAY() 함수는 NOW() 함수와 유사하게 현재 사용자에게 지정되어 있는 시간대로 실행 시점의 날짜값을 결과값으로 리턴한다. 즉, 시간값은 포함되지 않는 날짜 형식의 데이터를 리턴한다. TODAY() 함수는 날짜 필드를 만들때 기본값에서 사용도 할 수 있으며, 여러가지 목적에 따라 자동으로 날짜값을 계산하여 지정하는 용도로 많이 사용된다. 예를 들면;

  • ‘배송 예상 일자 (EstDeliveryDate__c)’ 는 항상 오늘 날자 기준으로 15일 후라면 필드의 기본값을 아래와 같이 지정하면 된다;
    = TODAY() +15
  • ‘수금 예상 일자 (ARCollectionDate__c)’ 가 판매일로 부터 무조건 30일 이후라면, 해당 필드의 유형을 ‘수식’으로 지정하고 아래와 같이 수식을 입력해주면 된다;
    TODAY() + 30 ➡ 수식 유형의 필드는 수정이 안된다는 점을 고려해야 한다.

 

TIMENOW()

이 함수는 위의 NOW(), TODAY() 와 같은 개념으로 날짜값에는 무관하게 현재의 시간값만을 결과값으로 리턴해주는 함수다.

 

WEEKDAY( 날짜 )

주어진 날짜의 요일을 반환하며, 일요일은 1로, 월요일은 2로 그리고 토요일은 7로 표시한다. 이 값을 CASE() 함수나, IF() 함수를 이용하여 문자로 변환하여 주로 사용한다.

 

ADDMONTHS( 날짜,  숫자 )

파라미터로 전달된 날짜에 숫자로 지정한 개월 전후의 날짜를 리턴하는 함수다. 지정된 날짜가 월의 마지막 날인 경우 결과 날짜는 결과 달의 마지막 날이된다. 그렇지 않을 경우 결과는 지정된 날짜로부터 N개월후의 동일 날짜를 반환한다. 예를 들면 ADDMONTH( StartDate__c, 5 ) 라는 수식에 대하여;

  • StartDate2017년 9월 20일이면 결과 날짜는 2018년 2월 20일이고, 
  • StartDate2017년 9월 30일일 경우에는 결과 날짜가 2018년 2월의 마지막 날, 즉 28이 된다.

 

이상 살펴본 함수들이 주로 사용되는 날짜, 시간관련 함수이다. 다음은 조건을 처리하는 함수와 논리 연산자 및 함수를 알아 보기로 하자.