我需要分别选择一个文件我必须使用条件来检查存在。在SQL中我应该写下面的查询:
SELECT *
FROM dummy
WHERE
timestamp >= CURRENT_TIMESTAMP - 300
表达式CURRENT_TIMESTAMP - 300
应该被读作“当前服务器时间戳减5分钟”而不管使用的SQL服务器(语法不同)。
要实现这一点,我需要使用服务器时间戳。原因很明显 - 我无法信任客户的日期/时间设置。
我可以从客户端读取当前服务器时间戳并再次使用它来构建过滤器,但更舒适和认真的是构建一个能够直接访问服务器时间戳的过滤器。
我目前正在使用此过滤器:
FilterDefinition<BsonDocument> filter = new BsonDocument()
{
{ "$or", new BsonArray()
{
new BsonDocument() { { "processing_started", new BsonDocument() { { "$exists", false } } } },
new BsonDocument() { { "processing_started", BsonNull.Value } },
new BsonDocument()
{
{ "$and", new BsonArray()
{
new BsonDocument() { { "processing_status", "started" } },
new BsonDocument() { { "processing_started", new BsonDocument() { { "$lte", new BsonDocument() { { "$subtract", new BsonArray() { "new Date()", ProcessingTimeout * 1000 } } } } } } }
}
}
}
}
}
};
但是我不确定是否在服务器端或客户端上评估了"new Date()"
表达式。
答案 0 :(得分:-1)
你起飞的300天是1天,1天。这样做的最简单方法可能就是将分钟数除以24而不是60。
(CURRENT_TIMESTAMP - (5.0 / 24.0 / 60.0))
是的,但是你对服务器时间的评论。如果它是在客户端机器上运行的应用程序,它将是客户端时间,但如果代码是SQL,则它将是服务器时间。