Azure cosmosdb CosmosDB,SQL查询,使用unixtimestamp筛选时间戳字段
我有一个cosmosdb,我正在用SQL查询它,我想在UnixtTimeStamp格式的时间戳字段上进行过滤。以下是我到目前为止提出的问题:Azure cosmosdb CosmosDB,SQL查询,使用unixtimestamp筛选时间戳字段,azure-cosmosdb,Azure Cosmosdb,我有一个cosmosdb,我正在用SQL查询它,我想在UnixtTimeStamp格式的时间戳字段上进行过滤。以下是我到目前为止提出的问题: SELECT root._id as hpid ,root.FirstConnected["$date"] as FirstConnected ,root.LastUpdated["$date"] as LastUpdated ,var._id as varid ,var.Values[0].Timestamp["$date"] as TimeStamp
SELECT
root._id as hpid
,root.FirstConnected["$date"] as FirstConnected
,root.LastUpdated["$date"] as LastUpdated
,var._id as varid
,var.Values[0].Timestamp["$date"] as TimeStamp
,var.Values[0]["Value"] as Val
FROM root
JOIN var IN root.Variables
WHERE
var._id IN (99998,99999) AND
var.Values[0].Timestamp["$date"] >= 1523270312001
结果如下:
[
{
"hpid": 21032,
"FirstConnected": 1522835868346,
"LastUpdated": 1523360279908,
"varid": 99998,
"TimeStamp": 1523270312001,
"Val": 8888
}
]
当前是一种能够动态过滤UnixTimeStamp中的时间戳值的好方法吗?假设我想从今天开始过滤最后5天
感谢您的帮助。是的,上述方法应该有效
var fiveDaysAgo = new Date();
fiveDaysAgo.setDate(d.getDate() - 5);
var threshold = twoDaysAgo.getTime() / 1000;
SELECT
root._id as hpid
,root.FirstConnected["$date"] as FirstConnected
,root.LastUpdated["$date"] as LastUpdated
,var._id as varid
,var.Values[0].Timestamp["$date"] as TimeStamp
,var.Values[0]["Value"] as Val
FROM root
JOIN var IN root.Variables
WHERE
var._id IN (99998,99999) AND
var.Values[0].Timestamp["$date"] >= @threshold
要动态计算时间戳,可以在Cosmos DB中创建一个用户定义函数(udf),并在查询中调用它 例如,可以按如下方式定义自定义项:
function getDateTarget(){
var date = new Date();
date.setDate(date.getDate() - 5)
return Math.floor(date.getTime() / 1000);
}
并在查询中使用它:SELECT*FROM c WHERE c.\u ts>udf.getDateTarget()