我以前用过一堆SQL数据库;例如Postgres和BigQuery,它们具有日期截断功能(例如:date_trunc
或TIMESTAMP_TRUNC
)。
mongodb是否有DATE_TRUNC函数?
我已经找到了$trunc
运算符,但它只适用于数字。
我想要一个DATE_TRUNC函数将给定的Date(其他SQL数据库中的时间戳类型)截断到特定的边界,例如年初,月初,小时的开始,可以通过获取其年,月,日期,小时来组成新的Date。
有没有人有一些变通的方法?特别是对于开始的时刻,一周,和开始的ISOWEEK,有没有人有一个很好的变通方法?
4条答案
按热度按时间0ejtzxu11#
可以组合$dateToParts和$dateFromParts
年、月、日、时、分:
结果:
周trunc使用
iso8601: true
参数:结果:
fae0ux8s2#
可以通过对日期或时间戳字段进行算术运算来获得ISO周的开始,这里周的开始是
Monday
(1),周的结束是Sunday
(7)文件
周开始
nhjlsmyf3#
可以使用$dateFromParts函数将日期截断为iso周:
举个例子
对于
Fri, 22 Jun 2018 20:46:50 UTC +00:00
,它返回Fri, 18 Jun 2018 00:00:00 UTC +00:00
。要将日期截断为小时、日、月等,使用
$dateFromString
和$dateToString
更容易。下面的示例将日期截断为小时:ldioqlga4#
从
Mongo 5
开始,您的愿望已通过$dateTrunc
运算符实现。例如,将日期截断为年份:
您可以使用
unit
参数在不同级别的单位(年、月、日、小时...甚至季度)进行截断。对于给定的单位,可以使用binSize
参数在不同的单位倍数(例如3年、6个月...)进行截断。您还可以指定周的开始日期: