Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure cosmosdb CosmosDB,SQL查询,使用unixtimestamp筛选时间戳字段_Azure Cosmosdb - Fatal编程技术网

Azure cosmosdb CosmosDB,SQL查询,使用unixtimestamp筛选时间戳字段

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

我有一个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
,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()