$dateFromParts (Construir Data a partir de Partes)

Última atualização: 2026-10-09

$dateFromParts (Construir Data a partir de Partes)

$dateFromParts constrói uma data a partir de partes numéricas como year (ano), month (mês), day (dia), hour (hora), minute (minuto), second (segundo) e millisecond (milissegundo) — a inversa de $dateToParts. Tem dois modos: campos de calendário (year, month, day...) ou campos de semana ISO 8601 (isoWeekYear, isoWeek, isoDayOfWeek). Campos não especificados assumem seus valores mínimos (month assume o padrão 1, hour o padrão 0). Útil para reconstruir datas a partir de componentes armazenados ou para criar limites de intervalos. timezone define o fuso da data resultante e tem UTC como padrão.

CategoriaData
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $dateFromParts: { year: <número>, month: <número>, day: <número>, hour: <número>, minute: <número>, second: <número>, millisecond: <número>, timezone: <fuso horário> } }

⚙️ Parâmetros

yearObrigatório; year no modo calendário, ou isoWeekYear no modo ISO.
month / isoWeekMês (padrão 1) ou semana ISO; use apenas os campos de um único modo.
day / isoDayOfWeekDia (padrão 1) ou dia ISO da semana.
hour/minute/second/millisecondOpcional; padrão 0.
timezoneFuso horário opcional para a data construída.

Retorno:O BSON Date construído; null se year estiver ausente.

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $dateFromParts: reconstruir o horário do evento a partir das partes (horário de Pequim)
db.events.aggregate([
  { $project: {
      startedAt: { $dateFromParts: { year: '$y', month: '$m', day: '$d', timezone: 'Asia/Shanghai' } }
  } }
])

Saída:

{ "_id": 1, "startedAt": ISODate("2026-09-25T00:00:00Z") }
{ "_id": 2, "startedAt": ISODate("2026-10-01T00:00:00Z") }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QPosso construir uma data apenas com o ano?
ASim — month assume o padrão 1, day o padrão 1 e as partes de tempo o padrão 0.
QPosso misturar campos de calendário e ISO?
ANão — campos de calendário e ISO são mutuamente exclusivos; misturá-los gera erro.
QValores fora do intervalo geram erro?
ASim, por exemplo, mês 13 ou dia 32 geram erro — valide antes de passar.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%