为日期创建一个自动化函数

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 经典的懒惰错误:)

以上是关于为日期创建一个自动化函数的主要内容,如果未能解决你的问题,请参考以下文章

在 2 个日期之间创建一个日期表

MySQL用户定义函数使用日期自动递增值

如何:使用 SQL Server 2008 为自动更新修改日期创建触发器

将日期转换为字符串以进行自动目录搜索

json中的String类型的日期为啥自动转换成date类型

Python自动化3.0-------学习之路------日期和时间!