为日期创建一个自动化函数
Posted
技术标签:
【中文标题】为日期创建一个自动化函数【英文标题】:Make an automated function for the date 【发布时间】:2019-08-09 11:41:11 【问题描述】:我的公司正在使用元数据库进行查询 我有为查询的自定义日期制作的数据 但是我们想把这个查询放在“脉冲”中,以便每天收到关于这个查询的邮件。 这个查询中的日期是否可以每天更改。获取最后“30 天”、“7 天”和最后一天数据的结果。
简而言之,我正在寻找一个函数,以便它可以跟踪“我的当前日期”,以便我可以执行“我的当前日期”-30 来获取持续 30 天的数据
["$lookup":
"from":"institutions",
"localField":"institute_id",
"foreignField":"_id",
"as":"insti"
,
"$group":
"_id":"$institute_id",
"name":"$first":"$insti.name",
"applicants1":"$addToSet":"$cond":["$gte":["$created_at",ISODate("2019-06-30T00:00:00.000Z")],"$candidate_id",null],
"applicants2":"$addToSet":"$cond":["$gte":["$created_at",ISODate("2019-07-23T00:00:00.000Z")],"$candidate_id",null],
"applicants3":"$addToSet":"$cond":["$gte":["$created_at",ISODate("2019-07-29T00:00:00.000Z")],"$candidate_id",null]
,
"$project":
"_id":0,
"name":"$name",
"last_30_days":"$subtract":["$size":"$applicants1",1],
"last_7_days":"$subtract":["$size":"$applicants2",1],
"last_1_day":"$subtract":["$size":"$applicants3",1]
,"$sort":"last_30_days":-1
]
我尝试在过去 30 天的查询中使用 "$currentDate()-30"
,但它不起作用
【问题讨论】:
您是否可以尝试一个更简单的查询,使用查询生成器过滤过去 30 天的数据,然后显示生成的 SQL?这样,您就可以弄清楚如何执行这种过滤器。我不了解 MongoDB,但如果我觉得这与它有关,而不是与元数据库本身有关。 【参考方案1】:您可以使用 $add:['$applicants1','3000'] 而不是使用 "$currentDate()-30" 这里 3000 以毫秒为单位。您还可以使用乘法运算符而不是以毫秒为单位传递值。作为 $multiply:['desireddays','216000'] 整个查询将变为 $add:['$applicants1',$multiply:['-desireddays','216000']]
过去几天以负值传递值:在您的情况下为 -30
参考https://www.hypertrends.com/2017/03/dateadd-functionality-mongodb/
【讨论】:
【参考方案2】:我目前在 mysql 查询中使用它
过去 30 天
where date(created_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
过去 7 天
where date(created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
对于当前日期
where date(created_at) >= CURDATE()
【讨论】:
过去 7 天的 INTERVAL 必须为 7 经典的懒惰错误:)以上是关于为日期创建一个自动化函数的主要内容,如果未能解决你的问题,请参考以下文章
如何:使用 SQL Server 2008 为自动更新修改日期创建触发器