수식에서 날짜, 날짜/시간 및 시간 값 사용
날짜 수식은 지불 마감일, 계약 경과일, 시간 또는 날짜가 종속되는 조직의 기타 기능을 관리하는 데 유용합니다.
필수 Edition
| 지원 제품: Salesforce Classic 및 Lightning Experience 모두 |
| 지원 제품: 모든 Edition |
날짜에 대해 작업할 때 날짜 및 날짜/시간과 같은 두 날짜 유형이 사용됩니다. 하나의 데이터 유형인 시간은 업무 시간과 같은 시간 추적 날짜와 무관합니다. 날짜에 대해 작업할 때 사용되는 대부분의 값은 연도, 월 및 일이 저장되는 날짜 데이터 유형입니다. CreatedDate와 같은 일부 필드는 날짜/시간 필드입니다. 즉, 날짜 값뿐만 아니라 시간 값도 저장됩니다(GMT에 저장되지만 사용자의 시간대로 표시됨). 보고서 및 레코드 세부 사항 페이지에서 볼 때 날짜, 날짜/시간 및 시간 필드의 서식이 사용자의 로캘로 지정됩니다. 시간 값의 정밀도 단위는 밀리초입니다. 날짜/시간 값의 정밀도 단위는 초입니다.
날짜, 날짜/시간 및 시간 값에 더하기 및 빼기와 같은 연산을 사용하여 미래 날짜 또는 두 날짜/시간 사이에 경과한 시간을 계산할 수 있습니다. 예를 들어, 다른 날짜에서 날짜를 하나 빼면 결과 값이 두 초기 값 일 수 간의 차이가 됩니다(숫자 데이터 유형). 두 날짜/시간 값 간의 동일한 연산이 일 수, 시간 및 분의 차이를 나타내는 10진수 값을 반환합니다. 두 시간 값 사이의 동일한 작업은 밀리초를 반환합니다.
예를 들어, 두 날짜/시간 값 간의 차이가 5.52인 경우 이는 두 값이 5일, 12시간(하루 중 0.5) 및 28분(하루 중 0.02)로 구분됨을 의미합니다. 또한 숫자 값을 날짜 및 날짜/시간에 추가할 수 있습니다. 예를 들어, TODAY() + 3 연산은 오늘 날짜부터 3일 후를 반환합니다. 날짜에 대한 작업의 예 및 자세한 정보는 샘플 날짜 수식의 목록을 참조하십시오.
예제 전체에서 변수 date및 date/time이 실제 날짜 및 날짜/시간 필드나 값 대신 사용됩니다.
복합 날짜 함수가 텍스트 또는 숫자 수식 함수보다 큰 크기로 컴파일되어 수식 컴파일 크기에 문제가 발생할 수 있음에 유의하십시오.
TODAY(), NOW() 및 TIMENOW()
TODAY() 함수는 현재 날짜, 월 및 연도를 Date 데이터 유형으로 반환합니다. 이 함수는 이전 날짜 이후에 경과한 일 수 또는 미래의 특정 일 수의 날짜가 적용되는 수식인 경우 또는 현재 날짜를 표시하려는 경우 유용합니다.
NOW() 함수는 현재 시각의 Date/Time 값을 반환합니다. 이는 특정 시간 및 날짜에 대해 고려하는 경우 유용합니다.
TIMENOW() 함수는 날짜 없이 현재 시간을 나타내는 GMT 값을 반환합니다. 현재 시간, 분 또는 밀리초를 확인하려는 경우 NOW() 함수 대신 이 함수를 사용하십시오. 이 값은 교대 근무 일정 또는 경과 시간과 같은 시간 추적에 유용합니다.
날짜 값과 날짜/시간 값 간에 변환하는 방법에 대한 세부 사항은 날짜/시간과 날짜 간에 변환을 참조하십시오.
DATE() 함수
DATE() 함수는 연도, 월 및 일이 지정된 Date 값을 반환합니다. 숫자 Y/M/D 값과 YEAR(), MONTH(), DAY() 함수는 DATE()에 대해 유효한 매개 변수입니다. 예를 들어 DATE( 2013, 6, 1 )는 2013년 6월 1일을 반환합니다. 마찬가지로 DATE( YEAR( TODAY() ), MONTH( TODAY() ) + 3, 1)은 현재 연도의 오늘로부터 3개월이 지난 첫 번째 날짜의 날짜 값을 반환합니다. 예를 들어 날짜가 유효하다고 가정합니다(예: 월이 1~12 사이).
입력된 Y/M/D 값이 잘못된 날짜를 생성하는 경우 DATE() 함수가 오류를 반환하므로 Date 값에 대해 오류 검사를 수행하는 것이 중요합니다. 샘플 날짜 수식에서 잘못된 날짜를 처리하는 메서드를 판독할 수 있습니다.
날짜/시간과 날짜 간에 변환
날짜 및 날짜/시간이 데이터 유형과 호환되지 않으므로 날짜와 날짜/시간 값 간에 연산을 수행하려는 경우 둘 모두 동일한 유형이 되도록 값을 변환해야 합니다. 또한 일부 함수(예: YEAR(), MONTH() 및 DAY())가 Date 값에 대해서만 작동하므로 먼저 Date/Time 값을 변환해야 합니다.
DATEVALUE( date/time
) 함수를 사용하여 Date/Time의 Date 값을 반환합니다. 예를 들어 Date/Time에서 연도를 가져오려면 YEAR( DATEVALUE(
date/time ) ) )을 사용합니다.
수식이 날짜/시간 필드를 참조하지만 날짜를 반환하는 경우 사용자의 시간대로 변환하지 않고 시간 구성 요소가 무시됩니다. 이 동작으로 인해 날짜가 올바르지 않을 수 있습니다. 사용자의 시간대를 수정하려면 DATEVALUE() 함수를 사용하여 날짜/시간 필드를 변환합니다.
DATETIMEVALUE( date ) 함수를 사용하여 Date 값을 Date/Time으로 변환할 수 있습니다. 시간이 그리니치 표준시(GMT)의 오전 12시로 설정된 후 표시될 때 레코드를 보는 사용자의 시간대로 변환됩니다. 샌프란시스코에 있는 사용자의 경우 DATETIMEVALUE( TODAY() )가 현재 날짜의 오전 12시가 아닌 이전 날짜의 오후 5시(일광 절약 시간 동안)를 반환합니다. 자세한 내용은 날짜/시간 및 시간대에 대한 노트를 참조하십시오.
날짜/시간과 시간 간에 변환
TIMEVALUE() 함수는 24시간 시계를 사용하여 “HH:MM:SS.MS”(hours:minutes:seconds.milliseconds) 형식으로 Time 데이터 유형 값을 반환합니다. 숫자 H/M/S/MS 값과 HOUR(), MINUTE(), SECONDS() 및 MILLISECONDS() 함수는 TIMEVALUE()에 대해 유효한 매개 변수입니다.
TIMEVALUE(value) 함수를 사용하여 Date/Time 유형, 텍스트, 병합 필드 또는 표현식의 Time 값을 반환합니다. 예를 들어 TIMEVALUE(ClosedDate)로 ClosedDate Date/Time 값에서 시간을 추출합니다.
날짜와 텍스트 간에 변환
날짜를 문자열의 일부로 포함하려면 TEXT() 함수에 Date 값을 넣어 텍스트로 변환합니다. 예를 들어, 오늘 날짜를 텍스트로 반환하려면 다음을 사용합니다.
"Today's date is " & TEXT( TODAY() )이는 로캘 종속 형식이 아닌 “YYYY-MM-DD” 형식으로 날짜를 반환합니다. 먼저 날짜에서 일, 월 및 연도를 추출한 후 원하는 형식으로 결합하여 형식을 변경할 수 있습니다. 예:
"Today's date is " & TEXT( MONTH( date ) ) & "/" & TEXT( DAY( date ) ) & "/" & TEXT( YEAR( date ) ) ) 또한 다른 날짜 필드 및 수식과 함께 문자열 값을 사용할 수 있도록 텍스트를 날짜로 변환할 수 있습니다. 텍스트의 형식을 “YYYY-MM-DD”로 지정할 수 있습니다. 다음 수식을 사용하여 날짜 값을 반환합니다.
DATEVALUE( "YYYY-MM-DD" )날짜/시간과 텍스트 간에 변환
TEXT() 함수를 사용하여 문자열에 Date/Time 값을 포함할 수 있지만 시간대에 주의해야 합니다. 예를 들어, 다음 수식을 고려하십시오.
"The current date and time is " & TEXT( NOW() )이 수식에서는 NOW()가 GMT로 오프셋됩니다. 일반적으로, 표시될 때 NOW()가 사용자의 시간대로 변환되지만 텍스트로 변환되어 있어 변환이 수행되지 않습니다. 따라서 샌프란시스코 시간(GMT-7)으로 8월 1일 오후 5시에 이 수식을 실행하는 경우 결과는 "현재 날짜와 시간은 2013–08–02 00:00:00Z"입니다.
Date/Time을 텍스트로 변환하면 끝에 GMT를 표시하기 위해 "Z"가 포함됩니다. 필드가 비어 있는 경우 TEXT( date/time )가 "Z"를 반환합니다. 따라서 작업하는 Date/Time 값이 비어 있을 수 있는 경우 텍스트로 변환하기 전에 다음을 확인하십시오.
IF(
ISBLANK( date/time ),
"",
TEXT( date/time )
)문자열을 Date/Time 값으로 변환하려면 “YYYYY-MM-DD HH:MM:SS” 형식의 문자열로 전달되는 DATETIMEVALUE()를 사용합니다. 이 메서드는 날짜/시간 값을 GMT로 반환합니다.
날짜와 텍스트 간에 변환
시간을 문자열의 일부로 포함하려면 Time 값을 TEXT() 함수에 넣어 텍스트로 변환합니다. 예를 들어, 현재 시간을 텍스트로 반환하려면 다음을 사용합니다.
"The time is " & TEXT( TIMENOW() )이 함수는 “HH:MM:SS.MS” 형식으로 시간을 반환합니다.
또한 다른 시간 필드 및 수식과 함께 문자열 값을 사용할 수 있도록 텍스트를 시간 날짜 유형으로 변환할 수 있습니다. 24시간 시계에서 “HH:MM:SS.MS"로 텍스트를 서식화하십시오. TIMEVALUE() 함수 사용:
TIMEVALUE("17:30:45.125")날짜/시간 및 시간대에 대한 노트
날짜 및 날짜/시간 값은 GMT로 저장됩니다. 레코드가 저장되면 필드 값이 사용자의 시간대에서 GMT로 조정된 후 레코드 세부 사항 페이지와 보고서에 표시될 때 뷰어의 시간대로 다시 조정됩니다. 날짜/시간을 날짜로 변환하면 동일한 날짜 값이 생성되므로 날짜 변환을 사용하면 문제가 발생하지 않습니다.
그러나 날짜/시간 필드 및 값에 대해 작업할 때 변환이 항상 사용자의 시간대가 아닌 GMT로 수행됩니다. 두 필드가 모두 동일한 시간대에 속하므로 한 필드에서 표준 날짜/시간 필드를 빼는 것은 문제가 되지 않습니다. 그러나 계산되는 값 중 하나가 텍스트 또는 날짜 값에서 날짜/시간 값으로 변환된 값이면 결과가 다릅니다.
샌프란시스코 사용자가 Date_Time_c라는 사용자 정의 날짜/시간 필드에 2013년 8월 2일 오전 12시 값을 입력한다고 가정합니다. 태평양 일광절약시간의 시간 차이는 GMT-7이므로 이 값은 2013–08–02 07:00:00Z로 저장됩니다. 8월 1일 오후 12시(PDT)에 사용자가 레코드를 보고 다음 수식이 실행됩니다.
Date_Time_c - NOW()계산에서 NOW()는 2013–08–01 19:00:00Z이며, 0.5(12시간)의 예상 결과를 반환하기 위해 2013–08–02 07:00:00Z에서 뺍니다.
다음과 같이 수식이 NOW() 대신 문자열 “2013–08–01 12:00:00”를 Date/Time 값으로 변환한다고 가정합니다.
Date_Time_c - DATETIMEVALUE( "2013-08-01 12:00:00" )이러한 경우 DATETIMEVALUE(
“2013–08–01 12:00:00” )는 2013–08–01 12:00:00Z이며, 결과로 0.79167 또는 19시간을 반환합니다.
수식에서 사용자의 시간대를 확인할 수 있는 방법은 없습니다. 모든 사용자가 동일한 시간대에 있는 경우 사용자 시간대와 GMT 간의 시간 차이를 변환된 값에 더하거나 빼서 시간대 차이를 조정할 수 있습니다. 그러나 일광 절약 시간이 시간대에 영향을 미치고 DST의 시작 및 종료 날짜가 매년 다르므로 수식으로 관리하기가 어렵습니다. 날짜/시간 값과 텍스트 또는 날짜 값 간에 변환해야 하는 트랜잭션에 Apex를 사용하는 것이 좋습니다.

