代码之家  ›  专栏  ›  技术社区  ›  J R B

如何比较宇宙数据库中的日期部分

  •  2
  • J R B  · 技术社区  · 6 年前

    我们正在cosmossdb中存储(employeeid、name、logdate)数据。logdate数据是datetime,我们希望从cosmos获取数据,其中logdate介于“2018-01-15”和“2018-01-30”之间,表示只想比较日期部分。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Jay Gong    6 年前

    基于 official document :

    或者,可以将日期时间存储为Unix时间戳,即 表示自1月1日以来经过的秒数, 1970。AzureCosmosDB的内部时间戳属性遵循这种方法。可以使用unixdatetimeconverter类进行序列化 日期时间作为数字。

    所以,我建议您将日期时间序列化为数字,以便与条件进行比较。

    你可以使用 User Defined Function 在SQL中:

    UDF:

        function convertTime(datetime){
            datetime = datetime.replace(/-/g,'/')  
            if(datetime){
                var date = new Date(datetime);
            }else{
                var date = new Date();
            }
            time1 = date.getTime(); 
            return time1;
        }
    

    SQL:

    SELECT c.LogDate FROM c
    where udf.convertTime(c.LogDate) > udf.convertTime('2018-01-15') 
    and udf.convertTime(c.LogDate) < udf.convertTime('2018-02-20')
    

    输出:

    enter image description here

    当然,您可以在代码中转换日期时间,而不是使用UDF。

        2
  •  0
  •   Krishnan Sundaram    6 年前

    我来自宇宙数据库工程团队。虽然jay的答案是另一种选择,但您仍然可以将日期时间作为字符串保留为默认的iso 8601格式,并在logdate上创建范围索引。您应该能够像这样定期比较日期时间,使用cosmos-db-sql查询:

    在“2018-01-15”和“2018-01-30”之间选择“from root where root.logdate”

    推荐文章