문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$dateFromString (애그리게이션)

이 페이지의 내용

  • 정의
  • 행동
  • 형식 지정자
  • 예제
$dateFromString

날짜/시간 문자열을 날짜 객체로 변환합니다.

$dateFromString 표현식의 구문은 다음과 같습니다.

{ $dateFromString: {
dateString: <dateStringExpression>,
format: <formatStringExpression>,
timezone: <tzExpression>,
onError: <onErrorExpression>,
onNull: <onNullExpression>
} }

$dateFromString 는 다음 필드가 있는 문서를 사용합니다.

필드
설명
dateString

날짜 객체로 변환할 날짜/시간 문자열입니다. 날짜/시간 형식에 대한 자세한 내용은 Date()를 참조하세요.

참고

연산자에 timezone 옵션을 지정하는 경우 dateString에 구역 정보를 포함하지 마세요.

format

선택 사항. dateString 의 날짜 형식 사양입니다. format 는 0 이상의 형식 지정자를 포함하는 문자열 리터럴로 평가되는 모든 표현식일 수 있습니다. 사용 가능한 지정자 목록은 서식 지정자를 참조하세요.

지정하지 않으면 $dateFromString"%Y-%m-%dT%H:%M:%S.%LZ" 를 기본 형식으로 사용하지만 다양한 형식을 허용하며 가능한 경우 dateString 구문 분석을 시도합니다.

timezone

선택 사항입니다. 날짜 서식을 지정하는 데 사용할 표준 시간대입니다.

참고

dateString 인수가 '2017-02-08T12:10:40.787Z'와 같은 형식이고 끝의 'Z'가 Zulu 시간(UTC 표준 시간대)을 나타내는 경우 timezone 인수를 지정할 수 없습니다.

<timezone> 은 다음과 같은 옵션과 이를 평가하는 표현식을 사용할 수 있습니다.

  • Olson 표준 시간대 식별자 "Europe/London"(예:"America/New_York" 또는 ), 또는

  • 형식의 UTC 오프셋입니다.

    • +/-[hh]:[mm], 예: "+04:45", 또는

    • +/-[hh][mm], 예: "-0530", 또는

    • +/-[hh], 예: "+03", 또는

  • 문자열 "Z", "UTC" 또는 "GMT"

표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.

onError

선택 사항. $dateFromString 에서 지정된 dateString 를 구문 분석하는 동안 오류가 발생하면 제공된 onError 표현식 의 결과 값을 출력합니다. 이 결과 값은 모든 유형이 가능합니다.

onError 을 지정하지 않으면 $dateFromStringdateString 를 구문 분석할 수 없으면 오류가 발생합니다.

onNull

선택 사항. $dateFromString 에 제공된 dateStringnull 이거나 누락된 경우 제공된 onNull 표현식 의 결과 값을 출력합니다. 이 결과 값은 모든 유형이 가능합니다.

onNull 을 지정하지 않고 dateStringnull 또는 누락된 경우 $dateFromStringnull 을 출력합니다.

다음도 참조하세요.

예제
결과
{ $dateFromString: {
dateString: "2017-02-08T12:10:40.787"
} }
ISODate("2017-02-08T12:10:40.787Z")
{ $dateFromString: {
dateString: "2017-02-08T12:10:40.787",
timezone: "America/New_York"
} }
ISODate("2017-02-08T17:10:40.787Z")
{ $dateFromString: {
dateString: "2017-02-08"
} }
ISODate("2017-02-08T00:00:00Z")
{ $dateFromString: {
dateString: "oct 20 2020"
} }
ISODate("2020-10-20T00:00:00.000Z")
{ $dateFromString: {
dateString: "06-15-2018",
format: "%m-%d-%Y"
} }
ISODate("2018-06-15T00:00:00Z")
{ $dateFromString: {
dateString: "15-06-2018",
format: "%d-%m-%Y"
} }
ISODate("2018-06-15T00:00:00Z")
{ $dateFromString: {
dateString: "WED jan 31 12:05:28 +03:30 1996"
} }
ISODate("1996-01-31T08:35:28.000Z")

<formatString>에서 사용할 수 있는 형식 지정자:

지정자
설명
가능한 값
%b
월 이름 축약형(3자)
jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec
%B
월 이름 전체
january-december
%d
월과 요일(2자리, 제로 패딩)
01-31
%G
ISO 8601 형식의 연도
0000-9999
%H
시(2자리, 제로 패딩, 24시간 시계)
00-23
%j
1년 기준 일수(3자리, 영숫자)
001-366
%L
밀리초(3자리, 제로 패딩)
000-999
%m
월(2자리, 제로 패딩)
01-12
%M
분(2자리, 제로 패딩)
00-59
%S
초(2자리, 제로 패딩)
00-60
%u
ISO 8601 형식의 요일 번호(1-월요일, 7-일요일)
1-7
%U
연도별 주(2자리, 제로 패딩)
00-53
%V
ISO 8601 형식의 연도별 주
1-53
%w
정수로 표현된 요일(0-일요일, 6-토요일)
0-6
%Y
연도(4자리, 0 패딩)
0000-9999
%z
UTC의 표준 시간대 오프셋.
+/-[hh][mm]
%Z
UTC에서 오프셋된 분을 숫자로 표시합니다. 예를 들어 표준 시간대 오프셋(+/-[hhmm])이 +0445이면 분 오프셋은 +285입니다.
+/-mmm
%%
리터럴로서의 백분율 문자
%

날짜가 있는 다음 문서가 포함된 collection logmessages를 고려해 보겠습니다.

{ _id: 1, date: "2017-02-08T12:10:40.787", timezone: "America/New_York", message: "Step 1: Started" },
{ _id: 2, date: "2017-02-08", timezone: "-05:00", message: "Step 1: Ended" },
{ _id: 3, message: " Step 1: Ended " },
{ _id: 4, date: "2017-02-09", timezone: "Europe/London", message: "Step 2: Started"},
{ _id: 5, date: "2017-02-09T03:35:02.055", timezone: "+0530", message: "Step 2: In Progress"}

다음 애그리게이션은 $dateFromString을 사용하여 date 값을 날짜 객체로 변환합니다.

db.logmessages.aggregate( [ {
$project: {
date: {
$dateFromString: {
dateString: '$date',
timezone: 'America/New_York'
}
}
}
} ] )

위 애그리게이션은 다음 문서를 반환하고 각 date 필드를 동부 표준 시간대로 변환합니다.

{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") }
{ "_id" : 2, "date" : ISODate("2017-02-08T05:00:00Z") }
{ "_id" : 3, "date" : null }
{ "_id" : 4, "date" : ISODate("2017-02-09T05:00:00Z") }
{ "_id" : 5, "date" : ISODate("2017-02-09T08:35:02.055Z") }

하드 코딩된 인수 대신 문서 필드를 통해 timezone 인수를 제공할 수도 있습니다. 예를 들면 다음과 같습니다.

db.logmessages.aggregate( [ {
$project: {
date: {
$dateFromString: {
dateString: '$date',
timezone: '$timezone'
}
}
}
} ] )

위 애그리게이션은 다음 문서를 반환하고 각 date 필드를 해당 UTC 표현으로 변환합니다.

{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") }
{ "_id" : 2, "date" : ISODate("2017-02-08T05:00:00Z") }
{ "_id" : 3, "date" : null }
{ "_id" : 4, "date" : ISODate("2017-02-09T00:00:00Z") }
{ "_id" : 5, "date" : ISODate("2017-02-08T22:05:02.055Z") }

컬렉션에 구문 분석할 수 없는 날짜 문자열이 있는 문서가 포함된 경우 선택적 매개 변수에 $dateFromString 애그리게이션 표현식 을 제공하지 onError 않으면 에서 오류가 발생합니다.

예를 들어, 컬렉션 dates에 다음 문서가 포함되어 있다고 가정해 보겠습니다.

{ "_id" : 1, "date" : "2017-02-08T12:10:40.787", timezone: "America/New_York" },
{ "_id" : 2, "date" : "20177-02-09T03:35:02.055", timezone: "America/New_York" }

onError 매개변수를 사용하여 잘못된 날짜를 원래 문자열 형식으로 반환할 수 있습니다.

db.dates.aggregate( [ {
$project: {
date: {
$dateFromString: {
dateString: '$date',
timezone: '$timezone',
onError: '$date'
}
}
}
} ] )

이 경우 다음과 같은 문서가 반환됩니다.

{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") }
{ "_id" : 2, "date" : "20177-02-09T03:35:02.055" }

컬렉션에 null 날짜 문자열이 있는$dateFromString 문서가 포함된 경우 선택적 null 매개변수에 애그리게이션 표현식 을 제공하지 않는 한 onNull 는 를 반환합니다.

예를 들어, 컬렉션 dates에 다음 문서가 포함되어 있다고 가정해 보겠습니다.

{ "_id" : 1, "date" : "2017-02-08T12:10:40.787", timezone: "America/New_York" },
{ "_id" : 2, "date" : null, timezone: "America/New_York" }

onNull 매개 변수를 사용하여 $dateFromStringnull 대신 유닉스 시간을 나타내는 날짜를 반환하도록 할 수 있습니다.

db.dates.aggregate( [ {
$project: {
date: {
$dateFromString: {
dateString: '$date',
timezone: '$timezone',
onNull: new Date(0)
}
}
}
} ] )

이 경우 다음과 같은 문서가 반환됩니다.

{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") }
{ "_id" : 2, "date" : ISODate("1970-01-01T00:00:00Z") }
← $dateFromParts (애그리게이션)

이 페이지의 내용