정의
$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선택 사항. 에서
$dateFromStringdateString지정된onError를 구문 분석하는 동안 오류가 발생하면 제공된 표현식 의 결과 값을 출력합니다. 이 결과 값은 모든 유형이 가능합니다.onError를 지정하지$dateFromString않으면dateString가 를 구문 분석할 수 없으면 오류가 발생합니다.onNull선택 사항.
dateString$dateFromStringnull에 제공된 이 이거나 누락된 경우 제공된onNull표현식 의 결과 값을 출력합니다. 이 결과 값은 모든 유형이 가능합니다.를 지정하지
onNull않고 가dateStringnull이거나$dateFromString누락된 경우null는 을 출력합니다.
행동
예시 | 결과 | ||||
|---|---|---|---|---|---|
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
|
형식 지정자
<formatString>에서 사용할 수 있는 형식 지정자:
지정자 | 설명 | Possible Values |
|---|---|---|
| 월 이름 축약형(3자) |
|
| 월 이름 전체 |
|
| 월과 요일(2자리, 제로 패딩) |
|
| ISO 8601 형식의 연도 |
|
| 시(2자리, 제로 패딩, 24시간 시계) |
|
| 1년 기준 일수(3자리, 영숫자) |
|
| 밀리초(3자리, 제로 패딩) |
|
| 월(2자리, 제로 패딩) |
|
| 분(2자리, 제로 패딩) |
|
| 초(2자리, 제로 패딩) |
|
| ISO 8601 형식의 요일 번호(1-월요일, 7-일요일) |
|
| 연도별 주(2자리, 제로 패딩) |
|
| ISO 8601 형식의 연도별 주 |
|
| 정수로 표현된 요일(0-일요일, 6-토요일) |
|
| 연도(4자리, 0 패딩) |
|
| UTC의 표준 시간대 오프셋. |
|
| UTC에서 오프셋된 분을 숫자로 표시합니다. 예를 들어 표준 시간대 오프셋( |
|
| 리터럴로서의 백분율 문자 |
|
예시
날짜 변환하기
날짜가 있는 다음 문서가 포함된 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") }
onError
컬렉션에 구문 분석할 수 없는 날짜 문자열이 있는 문서가 포함된 경우 선택적 onError 매개변수에 집계 표현식을 제공하지 않으면 $dateFromString에서 오류가 발생합니다.
예를 들어, 컬렉션 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" }
onNull
컬렉션에 null 날짜 문자열을 포함한 문서가 포함된 경우, $dateFromString은 선택적 onNull 매개 변수에 집계 표현식 을 제공하지 않는 한 null 을 반환합니다.
예를 들어, 컬렉션 dates에 다음 문서가 포함되어 있다고 가정해 보겠습니다.
{ "_id" : 1, "date" : "2017-02-08T12:10:40.787", timezone: "America/New_York" }, { "_id" : 2, "date" : null, timezone: "America/New_York" }
onNull 매개변수를 사용하여 $dateFromString이 null 대신 유닉스 시간을 나타내는 날짜를 반환하도록 할 수 있습니다.
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") }