Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$dateTrunc (operador de expresión)

$dateTrunc

Nuevo en la versión 5.0.

Trunca una fecha.

$dateTrunc sintaxis:

{
$dateTrunc: {
date: <Expression>,
unit: <Expression>,
binSize: <Expression>,
timezone: <tzExpression>,
startOfWeek: <Expression>
}
}
Campo
Requerido / Opcional
Descripción

fecha

Requerido

La fecha a truncar, especificada en UTC. La fecha puede ser cualquier expresión que resuelva en una Fecha, un Sello de Tiempo o un ObjectID.

Requerido

La unidad de tiempo, especificada como una expresión que debe resolverse en una de estas cadenas:

  • year

  • quarter

  • week

  • month

  • day

  • hour

  • minute

  • second

Juntos, binSize y unit especifican el período de tiempo utilizado en el cálculo de $dateTrunc.

Opcional

El valor numérico de tiempo, especificado como una expresión que debe resolverse en un número positivo distinto de cero. Por defecto es 1.

Juntos, binSize y unit especifican el período de tiempo utilizado en el cálculo de $dateTrunc.

Opcional

La zona horaria para el cálculo de $dateTrunc, especificada como una expresión que debe resolverse como una cadena que contenga uno de estos valores:

Si no se proporciona ninguna zona horaria, el cálculo se realiza en $dateTrunc UTC.

Formato
Ejemplos

Identificador de zona horaria Olson

  • America/New_York

  • Europe/London

  • GMT

Desplazamiento UTC

  • +/-[hh]:[mm] (ejemplo, +04:45)

  • +/-[hh][mm] (ejemplo, -0530)

  • +/-[hh] (ejemplo, +03)

Opcional

El inicio de la semana. Se utiliza cuando unidad es week. Por defecto a Sunday.

startOfWeek es una expresión que debe resolverse en una de estas cadenas insensibles a mayúsculas y minúsculas:

  • monday (o mon)

  • tuesday (o tue)

  • wednesday (o wed)

  • thursday (o thu)

  • friday (o fri)

  • saturday (o sat)

  • sunday (o sun)

Tip

$dateTrunc:

Juntos, binSize y unidad especifican el periodo de tiempo utilizado en el cálculo de $dateTrunc.

Por ejemplo:

  • Si binSize es 1 y unit es hour, el periodo de tiempo es una hora. Para la fecha 2021-03-20T11:30:05Z, $dateTrunc devuelve 2021-03-20T11:00:00Z.

  • Si binSize es 2 y unidad es hour, el periodo de tiempo es de dos horas. Para la fecha 2021-03-20T11:30:05Z, $dateTrunc devuelve 2021-03-20T10:00:00Z.

$dateTrunc:

  • Divide el tiempo para el cálculo $dateTrunc en períodos de tiempo llamados binSize en la unidadde tiempo especificada.

    Los períodos de tiempo comienzan en una fecha de referencia, que se determina por unidad. Si la unidad es:

    • Una cadena distinta de week, $dateTrunc utiliza una fecha de referencia de 2000-01-01T00:00:00.00Z. Por ejemplo, si binSize es 10 y unidad es year, los periodos de tiempo de ejemplo son:

      • 2000-01-01T00:00:00.00Z

      • 2010-01-01T00:00:00.00Z

      • 2020-01-01T00:00:00.00Z

    • Igual a week, $dateTrunc utiliza una fecha de referencia que se establece en el primer día de la semana más temprano que sea igual o posterior a 2000-01-01. El primer día se establece usando startOfWeek (el valor por defecto es domingo).

  • Devuelve el límite inferior del período de tiempo en el que se encuentra la fecha. El límite se devuelve como una ISODate. Si el campo binSize 1 es, establece las partes$dateTrunc menos significativas (determinadas por la unidad) de la 0 ISODate devuelta en y mantiene el resto de la ISODate sin cambios.

Si unidad es:

Si unidad es:

Crea una colección de cakeSales que incluya ventas de pasteles en el estado de California (CA) y Washington (WA):

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )

La colección cakeSales se utiliza en los siguientes ejemplos.

En este ejemplo, se utiliza $dateTrunc en una etapa $project para truncar los valores de orderDate de ventas de pasteles a dos semanas:

db.cakeSales.aggregate( [
{
$project: {
_id: 1,
orderDate: 1,
truncatedOrderDate: {
$dateTrunc: {
date: "$orderDate", unit: "week", binSize: 2,
timezone: "America/Los_Angeles", startOfWeek: "Monday"
}
}
}
}
] )

En el ejemplo:

  • $project incluye los campos _id, orderDate y truncatedOrderDate en el resultado.

  • $dateTrunc trunca el campo orderDate a un periodo de tiempo 2 binSize week unit en America/Los_Angeles timezone con startOfWeek establecido en Monday.

En este resultado de ejemplo, el orderDate truncado se muestra en el campo truncatedOrderDate:

[
{
_id: 0,
orderDate: ISODate("2020-05-18T14:10:30.000Z"),
truncatedOrderDate: ISODate("2020-05-11T07:00:00.000Z")
},
{
_id: 1,
orderDate: ISODate("2021-03-20T11:30:05.000Z"),
truncatedOrderDate: ISODate("2021-03-15T07:00:00.000Z")
},
{
_id: 2,
orderDate: ISODate("2021-01-11T06:31:15.000Z"),
truncatedOrderDate: ISODate("2021-01-04T08:00:00.000Z")
},
{
_id: 3,
orderDate: ISODate("2020-02-08T13:13:23.000Z"),
truncatedOrderDate: ISODate("2020-02-03T08:00:00.000Z")
},
{
_id: 4,
orderDate: ISODate("2019-05-18T16:09:01.000Z"),
truncatedOrderDate: ISODate("2019-05-13T07:00:00.000Z")
},
{
_id: 5,
orderDate: ISODate("2019-01-08T06:12:03.000Z"),
truncatedOrderDate: ISODate("2019-01-07T08:00:00.000Z")
}
]

Este ejemplo utiliza $dateTrunc en una etapa para truncar los valores de ventas de $group pasteles orderDate a seis meses y devolver la suma de los quantity valores:

db.cakeSales.aggregate( [
{
$group: {
_id: {
truncatedOrderDate: {
$dateTrunc: {
date: "$orderDate", unit: "month", binSize: 6
}
}
},
sumQuantity: { $sum: "$quantity" }
}
}
] )

En el ejemplo:

  • $group tiene el campo _id configurado en el campo truncatedOrderDate para agrupar los documentos cakeSales, y devuelve la suma de los valores quantity para cada grupo utilizando $sum.

  • $dateTrunc trunca el campo orderDate a un período de tiempo binSize 6 unit month.

En este ejemplo de salida, el orderDate truncado se muestra en el campo truncatedOrderDate y la suma quantity se muestra en el campo sumQuantity:

[
{
_id: { truncatedOrderDate: ISODate("2020-01-01T00:00:00.000Z") },
sumQuantity: 224
},
{
_id: { truncatedOrderDate: ISODate("2021-01-01T00:00:00.000Z") },
sumQuantity: 285
},
{
_id: { truncatedOrderDate: ISODate("2019-01-01T00:00:00.000Z") },
sumQuantity: 296
}
]

Volver

$dateToString

En esta página